我正在尝试构建一个正则表达式来匹配字符串,例如
1.) $(Something)
2.) $(SomethingElse, ")")
3.) $(SomethingElse, $(SomethingMore), Bla)
4.) $$(NoMatch) <-- should not match
5.) $$$(ShouldMatch) <-- so basically $$ will produce $
在一个文本中。
编辑: Something、SomethingElse、NoMatch、ShouldMatch 甚至可以是其他词——它们是宏的名称。我尝试匹配的字符串是“宏调用”,它可以出现在文本中,应该用它们的结果替换。我只需要正则表达式来突出显示语法。应突出显示完整的宏调用。3 号目前不那么重要。1号和2号需要工作。如果数字 4 和 5 不能像上面写的那样工作,但$(
a 之后的任何一个$
都不会匹配,这很好。
目前我有
(?<!\$)+\$\(([^)]*)\)
$(
如果没有前导,它匹配任何$
,如果我找不到另一种应用$$
结构的方法,这可能很好。
我想完成的下一步是忽略引号中的右括号。我怎么能做到这一点?
编辑所以如果我有这样的输入
Some text, doesn't matter what. And a $(MyMacro, ")") which will be replaced.
完整的'$(MyMacro, ")")'
将突出显示。
我已经有这个表情了
"(?:\\\\|\\"|[^"])*"
对于引号,包括转义引号。但我不知道如何应用它来忽略它们之间的一切......
PS 我正在使用 .NET 来应用正则表达式。因此将支持平衡组。我只是不知道如何应用这一切。