2016-08-18 128 views
0

我有以下问题。我想搜索文件夹和文件的路径,如果路径(文件或目录)的最后一部分包含我的搜索字符串,我的正则表达式应该只匹配。正则表达式字符串的末尾匹配

例如:

我想搜索 '喂' 以下路径的:

  1. d:\用户\我\文档\的FindFile \你好\

  2. D:\ Users \ me \ Documents \ FindFile \ hallo \ bla \

  3. D:\ Users \ me \ Documents \ FindFile \ hallo \ bla \ bla 2 \

  4. d:\用户\我\文档\的FindFile \你好\中\

  5. d:\用户\我\文档\的FindFile \你好\中\喂NR 2 \

  6. d: \用户\我\文档\的FindFile \你好\中\喂NR 2 \以及hallo.txt

  7. d:\用户\我\文档\的FindFile \测试\ DRIN \ DAS喂\

  8. d: \ Users \ me \ Documents \ FindFile \ test \ drin \ hallo test \

  9. d:\用户\我\文档\的FindFile \测试\ TXT DRIN \ test_hallo.txt

现在路号码2,3和4应该不会是因为他们不匹配最后是一个'hallo'。

我目前正在与此正则表达式尝试这种(例如2“喇嘛”,而不是与“BLA喂”什么的,在它“喂”结尾):.*hallo(\\|.+),但它不工作。

你可以查看我在这里做了什么。第2行,3和4高亮显示,并应不: https://regex101.com/r/eF3cU8/1

+0

修剪右侧的反斜杠,用反斜杠分割每个字符串并仅测试最后一部分。 –

回答

1

您可以使用:

^.*hallo(?=\\$|[^\\]+).*$ 

Demo

  • ^停泊在该行的开始(我们使用的是m国旗)
  • .*任意数量的任何字符出现
  • hallo字面文字hallo
  • (?=\\$|[^\\]+)一个正向前查找以确认或者下一个字符是一个斜线随后行的末尾,或者没有更多的斜线上线
  • .*任意数量的出现任何字符
  • $行结束
+0

谢谢!这解决了我的问题:) – mtzE

1

如果像你说的 - 只匹配,如果路径的最后一部分包括我的搜索字符串 - 这将意味着示例没有。 9也不应匹配,这应该这样做:

hallo[^\\]*\\[^\\]*$ 

它匹配hallo(搜索字符串),可选后跟任意字符\。然后接着是\,并且随后任何字符\

Check it out here at regex101然后再次任选

+0

@凯斯霍尔已经回答了我的问题。我解释错了,因为test_hallo.txt包含'hallo',那就是我在寻找的东西:)但是,无论如何,谢谢你! – mtzE

相关问题