我希望匹配
的'('和')'之间的内容Path()
Path(C:\...)
与
(?<=^Path\()(.*)(?=\))
在Notepad ++中,它匹配''&lt; - 零长度匹配和'C:...'。 但是使用Delphi XE3:
if TRegEx.IsMatch(pDef, '(?<=^Path\()(.*)(?=\))') then begin
只匹配'C:\ ...',但我需要空匹配。
答案 0 :(得分:0)
答案 1 :(得分:0)
Delphi的TRegEx
跳过所有零长度匹配。有关详细信息,请参阅QC104562。
如果从TPerlRegEx
属性中排除preNotEmpty
,您的正则表达式将与Delphi的State
一起使用。
也就是说,使用环视试图隔离正则表达式匹配的一部分导致低效的正则表达式。使用Path\(([^)\r\n]*)\)
或Path\((.*)\)
之类的东西要好得多,并检索第一个捕获组匹配的文本以获取实际路径。如果同一行中有其他Path(...)
个字符,但第一个正则表达式将正确匹配)
,但无法正确处理包含)
个字符的路径。