2

我需要一个正则表达式,它与一个大括号对的出现完全匹配:

myString_{1-10}         -> match
myString_{hello}_xyz    -> match
myString_{1-10}_{hello} -> do not match

这是我的正则表达式:

(\{)[^}]*(\})

问题是我的正则表达式还匹配包含不止一次出现的花括号对的字符串......我错过了什么?

4

3 回答 3

3

你可以使用这个:

^[^{}]*\{[^}]*\}[^{}]*$

解释:

^[^{}]*    // Match 0 or more occurrences of character other than [{}]
 \{        // Match a `{`
 [^}]*     // Match 0 or more occurrences of character other than }
 \}        // Match a `}`
 [^{}]*$   // Match 0 or more occurrences of character other than [{}]

您也需要注意嵌套大括号或不匹配的大括号

于 2013-07-28T21:38:00.033 回答
0

您可以在 .net 中将此模式与多行模式一起使用:

(?<=^(?>[^{\n]*))\{[^}]*\}(?=[^{\n]*$)
于 2013-07-28T22:01:51.653 回答
0

如果您正在对包含所有三行的整个变量进行正则表达式,这就是您要查找的内容:

(\{.*?\})_*(?:\{)*

输出将包含您正在寻找的内容。

这需要“s”标志//点匹配所有。

于 2013-07-28T21:47:19.610 回答