正则表达式使用资源键进行故障排除

时间:2013-08-09 18:49:22

标签: regex vb.net

我有内部函数调用来评估资源键。我有兴趣将它们解析为文本文件。

我的模式是Translate.Key(StuffToGrab)translatekey(StuffToGrab)caption=StuffToGrabheader=StuffToGrab以及最棘手的<%$ Resources:Resource, StuffToGrab %>

我为他们提出了正则表达式:

Translate.Key(\S+)
TranslateKey(\S+)
caption="".+?""
headerName="".+?""
<%\$\s*Resources:.+?%>

然而,他们没有返回'StuffToGrab'并返回我必须删除的其他信息,从而减慢了我的进程。

1 个答案:

答案 0 :(得分:1)

如果您想要的只是“StuffToGrab”,那么您真正想要做的就是匹配某些字符前面的文本(而不是实际匹配这些字符)。您可以使用零宽度断言在.NET中执行此操作,特别是lookbehind(?<=precedingchars)

括号是特殊字符,但\S恰好与它们匹配。即便如此,您可能希望明确指定它们。

示例:

(?<=Translate.Key\()[^)]+
(?<=TranslateKey\()[^)]+
(?<=caption=")[^"]+
(?<=headerName=")[^"]+
(?<=<%\$\s*Resources:\s*).*?(?=\s*%>)

请参阅此处的工作示例:http://fiddle.re/fph0a