我有一个CLASSPATH值C:\Windows\abc;C:\Windows\def;C:\Windows\ghi
,需要获得C:\Windows\def
。除了def
中间路径(或CLASSPATH中只有一个路径\..\..\parent\def
)之外,CLASSPATH的值可能会有所不同。
正则表达式为;?(.*def)
但匹配C:\Windows\abc;C:\Windows\def
在C:\Windows\def
;
是否存在,我都只想C:\Windows\def
实现它的正确方法是什么?
答案 0 :(得分:1)
贪婪不是问题所在;相反,你需要排除分号。
匹配不包含;
但以def
结尾的字符序列:
[^;]*def
并确保其后跟字符串的结尾或;
:
[^;]*def(?=;|$)