我要匹配以下字符串:
[anything can be here]
[{anything can be here}]
我可以只使用一个正则表达式来实现吗?
我目前正在使用这个 '^\[({)?.+(})?]$'
,但它也会匹配:
[anything can be here}]
[{anything can be here]
仅当使用 {
时,我才需要匹配 }
。
请注意,我只能使用正则表达式匹配函数,因为我已将其实现为 SQL CLR
函数,以便在 T-SQL
语句中使用它。
最佳答案
基本上你可以写(逐字字符串):
^\[(?:{.+}|[^]{}]+)]$
你可以使用更复杂的条件语句(?(condition)then|else)
:
^\[({)?[^]{}]+(?(1)}|)]$
(如果捕获组 1 存在,则 }
否则什么都没有)
但这种方式可能效率较低。
关于c# - 正则表达式 - 如果开始匹配则匹配结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913744/