我有以下问题。我想搜索文件夹和文件的路径,如果路径的最后一部分(文件或目录)包含我的搜索字符串,我的正则表达式应该只匹配。
例如:
我想在以下路径中搜索'hallo':
d:\用户\我\文件\的FindFile \喂\
d:\用户\我\文件\的FindFile \喂\ BLA \
D:\ Users \ me \ Documents \ FindFile \ hallo \ bla \ bla \ 2 \
d:\用户\我\文件\的FindFile \喂\内部\
D:\ Users \ me \ Documents \ FindFile \ hallo \ inside \ hallo nr2 \
D:\ Users \ me \ Documents \ FindFile \ hallo \ inside \ hallo nr2 \ well hallo.txt
D:\ Users \ me \ Documents \ FindFile \ test \ drin \ das hallo \
D:\ Users \ me \ Documents \ FindFile \ test \ drin \ hallo test \
- 醇>
D:\ Users \ me \ Documents \ FindFile \ test \ txt drin \ test_hallo.txt
现在路径编号2,3和4不应该匹配,因为它们不以'hallo'结尾。 (例如2以'bla'结尾而不是'bla hallo'或其中包含'hallo'的东西)
我目前正在尝试使用此正则表达式:.*hallo(\\|.+)
,但它无效。
你可以查看我在这里做了什么。第2,3和4行突出显示,不应该: https://regex101.com/r/eF3cU8/1
答案 0 :(得分:1)
您可以使用:
^.*hallo(?=\\$|[^\\]+).*$
^
锚定在该行的开头(我们使用的是m
标志).*
任意数量的任何字符hallo
文字hallo
(?=\\$|[^\\]+)
一个积极的预测,以确认下一个字符是斜线后跟行尾,或者行上没有斜线.*
任意数量的任何字符$
行尾答案 1 :(得分:1)
如果你说 - 仅在路径的最后一部分包含我的搜索字符串时匹配 - 这意味着示例no。 9也不应该匹配,这应该这样做:
hallo[^\\]*\\[^\\]*$
匹配hallo
(您的搜索字符串),可选,后跟任何字符但 \
。然后是\
,然后是可选,后跟任何字符但 \