我想匹配 '(' 和 ')' 之间的内容
Path()
Path(C:\...)
和
(?<=^Path\()(.*)(?=\))
在 Notepad++ 中,它匹配 '' <-- 零长度匹配和 'C:...'。但使用德尔福 XE3:
if TRegEx.IsMatch(pDef, '(?<=^Path\()(.*)(?=\))') then begin
只匹配 'C:\...' 但我需要空匹配。
Delphi 会TRegEx跳过所有长度为零的匹配项。详见QC104562。
如果您从属性中TPerlRegEx排除,您的正则表达式将与 Delphi 一起使用。preNotEmptyState
也就是说,使用环视来尝试隔离正则表达式匹配的一部分会导致正则表达式效率低下。更好地使用类似Path\(([^)\r\n]*)\)or的东西Path\((.*)\)并检索与第一个捕获组匹配的文本以获取实际路径。Path(...)当同一行上有其他字符时,第一个正则表达式将正确匹配,)但不会正确处理包含)字符的路径。