繁体   English   中英

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

[英]how to build a regex with square brackets

我需要构建一个reg-ex来查找["",之间的所有字符串",

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

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

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

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

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

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

@Szymon和@ zx81:

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

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

你的正则表达式会抓住["anything you want["anything you want",而不是["anything you want",

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM