如何使用正则表达式获取包含在括号之间的文本
本文关键字:之间 文本 何使用 正则表达式 获取 包含 | 更新日期: 2023-09-27 18:35:41
我今天的第二个问题!
我想在 c# 中使用正则表达式获取包含在括号(左括号及其右括号)之间的文本。我使用这个正则表达式:
@"'{'{(.*)'}'}
这里有一个例子:如果我的文本是:
text {{text{{anothertext}}text{{andanothertext}}text}} and text.
我想得到 :
{{text{{anothertext}}text{{andanothertext}}text}}
但是有了这个正则表达式,我得到:
{{text{{anothertext}}
我知道另一种获取文本的解决方案,但是正则表达式有解决方案吗?
幸运的是,.NET 的正则表达式引擎支持平衡组定义形式的递归:
Regex regexObj = new Regex(
@"'{'{ # Match {{
(?> # Then either match (possessively):
(?: # the following group which matches
(?!'{'{|'}'}) # (but only if we're not at the start of {{ or }})
. # any character
)+ # once or more
| # or
'{'{ (?<Depth>) # {{ (and increase the braces counter)
| # or
'}'} (?<-Depth>) # }} (and decrease the braces counter).
)* # Repeat as needed.
(?(Depth)(?!)) # Assert that the braces counter is at zero.
'}} # Then match a closing parenthesis.",
RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);