Regex 如何制作'';非格雷迪
我有一个类路径值Regex 如何制作'';非格雷迪,regex,non-greedy,Regex,Non Greedy,我有一个类路径值C:\Windows\abc;C:\Windows\def;C:\Windows\ghi,需要获取C:\Windows\def。除了中间路径的def(或者类路径中只有一个路径\..\\..\parent\def)之外,类路径的值可以不同 正则表达式是;?(.*def)但它与C:\Windows\abc;C:\Windows\def 我只想要C:\Windows\def,而不管是否存在就在C:\Windows\def 实现这一目标的正确方法是什么?贪婪不是这里的问题;相反,您需要排
C:\Windows\abc;C:\Windows\def;C:\Windows\ghi
,需要获取C:\Windows\def
。除了中间路径的def
(或者类路径中只有一个路径\..\\..\parent\def
)之外,类路径的值可以不同
正则表达式是;?(.*def)
但它与C:\Windows\abc;C:\Windows\def
我只想要C:\Windows\def
,而不管是否存在代码>就在C:\Windows\def
实现这一目标的正确方法是什么?贪婪不是这里的问题;相反,您需要排除分号
匹配不包含的字符序列代码>但以def
结尾:
[^;]*def
并确保后面紧跟着字符串的结尾或代码>:
[^;]*def(?=;|$)
?
在许多引擎中都是非贪婪的?
,但似乎您真正想要的是([^;]*def)
。您可以试试。它在JavaScript中使用吗?它在PCRE中使用。现在,[^;]*def(?;;$)
正则表达式将匹配C:\Windows\abcdef中的;C:\Windows\def;C:\Windows\ghi
。我认为OP只需要在末尾将值与\def
匹配。@WiktorStribiżew:OP从未说过这不是有意的,但在def
之前添加\\
并不难。是的,当要求时,他们通常不会那么健谈:(