【问题标题】:how to build a regex with square brackets如何使用方括号构建正则表达式
【发布时间】:2014-05-07 09:35:54
【问题描述】:

我需要构建一个正则表达式来查找["", 之间的所有字符串

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

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

【问题讨论】:

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


【解决方案1】:

你的意思是像[" 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

【讨论】:

    【解决方案2】:

    你可以使用这个正则表达式:

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

    它使用look-behind 和look-ahead 肯定断言来检查匹配是否前面是[",后面是",

    【讨论】:

      【解决方案3】:

      @Szymon 和 @zx81 :

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

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

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

      要解决这个问题,您可以在每个正则表达式中使用:[^\[],而不是 .

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

      (PS:即使这个解决方案也不是完美的,以防字符串中可能有 '[' 但我不知道如何只用一个正则表达式来解决这种情况)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多