Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Asp.net 任何介于[]之间的项的正则表达式_Asp.net_Regex - Fatal编程技术网

Asp.net 任何介于[]之间的项的正则表达式

Asp.net 任何介于[]之间的项的正则表达式,asp.net,regex,Asp.net,Regex,我需要找到[]的正则表达式 例如,如果字符串是-Hi[Stack],那么这里是我需要[Find]的[Tag] 它应该会回来 堆栈、标记、查找非常简单,您只需(1)用反斜杠转义括号,以及(2)使用(.*)捕获内容 \[(.*?)\] 括号是一个捕获组,它们捕获内容供以后使用。*后面的问号使匹配的非贪婪。这意味着它将匹配最短的匹配,而不是最长的匹配。当一行中有多个匹配项时,贪婪和非贪婪的区别就会出现: Hi [Stack], Here is my [Tag] which i need to [Fi

我需要找到[]的正则表达式

例如,如果字符串是-Hi[Stack],那么这里是我需要[Find]的[Tag]

它应该会回来
堆栈、标记、查找非常简单,您只需(1)用反斜杠转义括号,以及(2)使用
(.*)
捕获内容

\[(.*?)\]
括号是一个捕获组,它们捕获内容供以后使用。
*
后面的问号使匹配的非贪婪。这意味着它将匹配最短的匹配,而不是最长的匹配。当一行中有多个匹配项时,贪婪和非贪婪的区别就会出现:

Hi [Stack], Here is my [Tag] which i need to [Find].
   ^______________________________________________^
贪婪匹配将在两组方括号之间找到最长的字符串。那是不对的。非贪婪匹配将找到最短的:

Hi [Stack], Here is my [Tag] which i need to [Find].
   ^_____^
无论如何,代码最终会:


应该有用。如果还需要包含特殊字符,则可能必须更改匹配组。

取决于您所指的环境:

\[([^\]]+)]

.NET语法,考虑多个嵌入式括号:

\[(((?:\\.|)(?\[)|(?\])|[^\]])*((?(打开)(?!)))\]


这会计算
OPEN
中打开的
[
节的数量,只有当
OPEN
最后为0时才会成功。

我遇到了类似的问题,并发现这也起到了作用

\[\w{1,}\]
\w表示元字符。这将匹配一个或多个单词字符


使用n{X,}量词匹配任何可以获得不同数量的字符串。故意省略第二个数字后,表达式表示要匹配1个或多个字符。

在什么平台上?在什么编程语言中?asp.net。我使用的是Regex.IsMatch()是否存在嵌套匹配:
foo[bar[baz]]完成
您想在哪里抓取
bar[baz]
?或者可能是
foo[bar\\]baz]完成
您想在哪里抓取
bar]baz
[
]
之间是否有新行?啊,.NET。。。这是一个Emacs正则表达式。:-)我认为即使在Emacs语法中,您也错过了一个
]
。我冒昧地将其更改为与.NET兼容的。请注意,
]
只需要在字符集内部转义,而不需要在字符集外部转义(尽管转义它不会有什么坏处…)。这比当前标记的答案更有效,因为它可以更好地控制以下内容:“Test[Test][Test[Test]”标记的答案将包括错误答案[在比赛中,而这个正则表达式不会。
\[([^\]]+)]
\[\w{1,}\]