字符串结尾匹配的正则表达式模式

时间:2016-08-18 09:37:57

标签: regex string match

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

例如:

我想在以下路径中搜索'hallo':

  
      
  1. d:\用户\我\文件\的FindFile \喂\

  2.   
  3. d:\用户\我\文件\的FindFile \喂\ BLA \

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

  6.   
  7. d:\用户\我\文件\的FindFile \喂\内部\

  8.   
  9. D:\ Users \ me \ Documents \ FindFile \ hallo \ inside \ hallo nr2 \

  10.   
  11. D:\ Users \ me \ Documents \ FindFile \ hallo \ inside \ hallo nr2 \ well hallo.txt

  12.   
  13. D:\ Users \ me \ Documents \ FindFile \ test \ drin \ das hallo \

  14.   
  15. D:\ Users \ me \ Documents \ FindFile \ test \ drin \ hallo test \

  16.   
  17. D:\ Users \ me \ Documents \ FindFile \ test \ txt drin \ test_hallo.txt

  18.   

现在路径编号2,3和4不应该匹配,因为它们不以'hallo'结尾。 (例如2以'bla'结尾而不是'bla hallo'或其中包含'hallo'的东西)

我目前正在尝试使用此正则表达式:.*hallo(\\|.+),但它无效。

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

2 个答案:

答案 0 :(得分:1)

您可以使用:

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

Demo

  • ^锚定在该行的开头(我们使用的是m标志)
  • .*任意数量的任何字符
  • hallo文字hallo
  • (?=\\$|[^\\]+)一个积极的预测,以确认下一个字符是斜线后跟行尾,或者行上没有斜线
  • .*任意数量的任何字符
  • $行尾

答案 1 :(得分:1)

如果你说 - 仅在路径的最后一部分包含我的搜索字符串时匹配 - 这意味着示例no。 9也不应该匹配,这应该这样做:

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

匹配hallo(您的搜索字符串),可选,后跟任何字符 \。然后是\,然后是可选,后跟任何字符 \

Check it out here at regex101