正则表达式匹配C++中路径的一部分

0sgqnhkj  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

为了匹配路径的一部分,然后使用第二个捕获组来提取它,我在尝试使用正则表达式时遇到了问题
假设我们有以下路径:
./var/lib/
简体中文
./var/lib
从这些例子中,我试图匹配的字符串部分对于所有这些输入都是(var/lib),所以我决定尝试使用正则表达式。
这就是我目前所拥有的:
第一个月
到目前为止,它匹配所有可能的场景,但它不匹配最后一个捕获组。
例如./var/lib/test/匹配正确,但第三个捕获组匹配的不是las /,而是第二个,我不能这样做。
正确的行为应该是:
| 第一组|二组|三组|
| --|--|--|
| .//|var/lib/test|//下一页|

ocebsuys

ocebsuys1#

你只需要使用一个懒惰的量词+?而不是贪婪的+(同样,你在原始的正则表达式中错过了第二组):

(\.\/)?([A-Za-z0-9][A-Za-z0-9\/]+?)(\/)?$

字符串
惰性量词尽可能少地匹配,但由于您要求匹配包含字符串结尾$,因此它别无选择,只能捕获除最后/之外的所有内容。
See online on regex101
See online on godbolt

相关问题