我有一个正则表达式在文本文件中的方括号之间找到任何东西,这就是:
Regex squareBrackets = new Regex(@"\[(.*?)\]");
我想创建一个正则表达式,基本上是相反的方式来选择方括号中的内容之后的任何内容。所以我想把它们换成圆形?
Regex textAfterTitles = new Regex(@"\](.*?)\[");
但这不起作用,正则表达式让我困惑 - 任何人都可以帮忙吗? 干杯
答案 0 :(得分:1)
您可以使用lookbehind:
var textAfterTiles = new Regex(@"(?<=\[(.*?)\]).*");
如果您有多个此类括号内的群组,则可以将其与lookahead结合使用,例如:
var textAfterTiles = "before [one] inside [two] after"
你想匹配" inside "
和" after"
,你可以这样做:
new Regex(@"(?<=\[(.*?)\])[^\[]*");
答案 1 :(得分:1)
相同的\[(.*?)]
正则表达式(我只是删除]
之前的冗余转义反斜杠),或者更好的正则表达式\[([^]]*)]
,可用于拆分文字并获取[...]
以外的文字(如果与RegexOptions.ExplicitCapture
修饰符一起使用):
var data = "A bracket is a tall punctuation mark[1] typically used in matched pairs within text,[2] to set apart or interject other text.";
Console.WriteLine(String.Join("\n", Regex.Split(data,@"\[([^]]*)]",RegexOptions.ExplicitCapture)));
C# demo的输出:
A bracket is a tall punctuation mark
typically used in matched pairs within text,
to set apart or interject other text.
RegexOptions.ExplicitCapture
标志使模式中的捕获组不捕获,因此捕获的文本不会输出到生成的拆分数组中。
如果您不必保留相同的正则表达式,只需删除捕获组,使用\[[^]]*]
进行拆分。
答案 2 :(得分:0)
你可以尝试这个
\]([^\]]*)\[