正则表达式查找“]”之后和“[”之前的任何内容

本文关键字:任何内 查找 之后 正则表达式 | 更新日期: 2023-09-27 18:36:34

>我有一个正则表达式来查找文本文件中方括号之间的任何内容,即:

Regex squareBrackets = new Regex(@"'[(.*?)']");

我想创建一个基本上相反的正则表达式来选择方括号中的内容之后的任何内容。所以我想就把它们换一圈?

Regex textAfterTitles = new Regex(@"'](.*?)'[");

但这不起作用,正则表达式让我感到困惑 - 有人可以帮忙吗?干杯

正则表达式查找“]”之后和“[”之前的任何内容

您可以使用回溯:

var textAfterTiles = new Regex(@"(?<='[(.*?)']).*");

如果您有多个此类括号组,则可以将其与前瞻结合使用,例如:

var textAfterTiles = "before [one] inside [two] after"

你想匹配" inside "" after",你可以这样做:

new Regex(@"(?<='[(.*?)'])[^'[]*");

相同的'[(.*?)]正则表达式(我只是在]之前删除多余的转义反斜杠),或者更好的正则表达式'[([^]]*)],可用于拆分文本并获取[...]外部的文本(如果与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# 演示的输出:

A bracket is a tall punctuation mark
 typically used in matched pairs within text,
 to set apart or interject other text.

RegexOptions.ExplicitCapture标志使模式内的捕获组无法捕获,因此,捕获的文本不会输出到生成的拆分数组中。

如果您不必保留相同的正则表达式,只需删除捕获组,使用 '[[^]]*] 进行拆分。

你可以试试这个

']([^']]*)'[