【发布时间】:2014-05-07 09:35:54
【问题描述】:
【问题讨论】:
标签: c# regex vb.net visual-studio-2010
【问题讨论】:
标签: c# regex vb.net visual-studio-2010
你的意思是像[" my beautiful string ",这样的字符串?
然后听起来像这个简单的正则表达式:
\[".*?",
要获取 C# 中的所有字符串,您可以执行类似的操作
using System;
using System.Text.RegularExpressions;
using System.Collections.Specialized;
class Program {
static void Main() {
string s1 = @" ["" my beautiful string "", ["" my second string "", ";
var resultList = new StringCollection();
try {
var myRegex = new Regex(@"\["".*?"",", RegexOptions.Multiline);
Match matchResult = myRegex.Match(s1);
while (matchResult.Success) {
resultList.Add(matchResult.Groups[0].Value);
Console.WriteLine(matchResult.Groups[0].Value);
matchResult = matchResult.NextMatch();
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
Console.WriteLine("\nPress Any Key to Exit.");
Console.ReadKey();
} // END Main
} // END Program
【讨论】:
你可以使用这个正则表达式:
(?<=\[").*?(?=",)
它使用look-behind 和look-ahead 肯定断言来检查匹配是否前面是[",后面是",。
【讨论】:
@Szymon 和 @zx81 :
小心:您的正则表达式可能有问题(取决于 xhammer 的需要)。如果字符串是例如:
["anything you want["anything you want",anything you want
您的正则表达式将捕获 ["anything you want["anything you want", 而不是 ["anything you want",
要解决这个问题,您可以在每个正则表达式中使用:[^\[],而不是 .。
查看正则表达式是否满足您的需求的最佳方法是在在线正则表达式测试器中对其进行测试。
(PS:即使这个解决方案也不是完美的,以防字符串中可能有 '[' 但我不知道如何只用一个正则表达式来解决这种情况)
【讨论】: