如何使用方括号构建正则表达式

时间:2014-05-07 09:35:55

标签: c# regex vb.net visual-studio-2010

我需要建立一个注册表来查找["",之间的所有字符串

上述两个字符串都有多次出现,我想要它们之间的所有内容。请帮忙吗?

这是一个例子:http://pastebin.com/crFDit2N

3 个答案:

答案 0 :(得分:2)

你的意思是一个字符串,如[" 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

答案 1 :(得分:1)

您可以使用此正则表达式:

(?<=\[").*?(?=",)

它使用后视和前瞻性肯定断言来检查匹配是否以["开头,后跟",

答案 2 :(得分:0)

@Szymon和@ zx81:

小心:您的正则表达式(取决于xhammer需要)可能存在问题。如果字符串是例如:

["anything you want["anything you want",anything you want

您的正则表达式将捕获["anything you want["anything you want",而不是["anything you want",

要解决此问题,您可以在每个正则表达式中使用:[^\[]代替.

查看正则表达式是否适合您的需求的最佳方法是在在线正则表达式测试器中进行测试。

(PS:即使这个解决方案也不是完美的,如果字符串中有&#39; [&#39;但是我不知道如何只解决这个问题一个正则表达式)