【发布时间】:2020-06-22 06:36:58
【问题描述】:
我需要在 C# 中找到一个匹配并返回由 $( 和 )$ 分隔的嵌套结构中的字符串的正则表达式。
我的输入字符串是:
$(string1$(string2)$sometexthere$(string3$(string4)$texttext)$anothertext)$
输出必须是:
$(string1$(string2)$sometexthere$(string3$(string4)$texttext)$anothertext)$
$(string2)$
$(string3$(string4)$texttext)$
$(string4)$
我已尝试使用此正则表达式 \$\([^\$]*\)\$,但它只返回最内部的 string2 和 string4。
有没有办法用正则表达式返回每个匹配项?甚至通过一个循环? ($( 和 )$ 可以替换为 [ 和 ] 之后)
【问题讨论】:
-
不,正则表达式不能适当地捕获任意嵌套。您可以使用 $( 和 )$ 的正则表达式来拆分,即标记字符串,然后将其处理成树。
-
我认为方括号内不需要反斜杠。
标签: c# .net regex string parsing