Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式在']'之后和'['之前查找任何内容_C#_Regex_Forms - Fatal编程技术网

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.