C# 正则表达式在']'之后和'['之前查找任何内容
我有一个正则表达式,用于查找文本文件中方括号之间的任何内容,如下所示:C# 正则表达式在']'之后和'['之前查找任何内容,c#,regex,forms,C#,Regex,Forms,我有一个正则表达式,用于查找文本文件中方括号之间的任何内容,如下所示: Regex squareBrackets = new Regex(@"\[(.*?)\]"); 我想创建一个regex,它基本上是相反的方式来选择方括号中的内容之后的任何内容。所以我想把它们交换一下 Regex textAfterTitles = new Regex(@"\](.*?)\["); 但这不起作用,Regex让我困惑——有人能帮忙吗? 干杯您可以使用: 你想在内部和之后匹配,你可以这样做: new Regex
Regex squareBrackets = new Regex(@"\[(.*?)\]");
我想创建一个regex,它基本上是相反的方式来选择方括号中的内容之后的任何内容。所以我想把它们交换一下
Regex textAfterTitles = new Regex(@"\](.*?)\[");
但这不起作用,Regex让我困惑——有人能帮忙吗?
干杯您可以使用:
你想在内部和之后匹配,你可以这样做:
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)));
报告的产出:
RegexOptions.ExplicitCapture标志使模式内的捕获组不捕获,因此,捕获的文本不会输出到结果分割数组中
如果不必保留相同的正则表达式,只需删除捕获组,使用\[^]]*]进行拆分。尝试:[a-z][a-z0-9\]*而不是。*?您可以使用与var parts=square括号.Replaceinput、\xfff.Split'\xfff'相同的正则表达式;你好,很抱歉回复太长。恐怕这只是像第一个正则表达式那样返回标题。如果有帮助的话,我正在使用一个用于循环计算机的HRM文件。正则表达式是相同的,方法是不同的。如果使用RegexOptions.ExplicitCapture修饰符,则无法获得相同的结果。尝试在没有组的情况下使用Regex.Split:@\[^]]*]。查看演示,按照演示中的每个步骤进行操作。您是使用了我的演示中的代码还是修改了它?
\]([^\]]*)\[
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)));
A bracket is a tall punctuation mark
typically used in matched pairs within text,
to set apart or interject other text.