Java正则表达式排除文件路径中的点

时间:2015-04-16 08:59:08

标签: java regex string

我现在一直在乱用正则表达式,我似乎无法做到正确。

我有一个包含一些文件信息和路径的文本文件。我想搜索的文字是:

Windows\System32\user32.dll

该文件的内容是:

Windows\System32\user32.dll
WINDOW~1.000\Windows\System32\user32.dll
Windows.old.000\Windows\System32\user32.dll

我使用的模式只是\\Windows\\System32\\user32.dll,但现在匹配所有条目。

我需要做的是排除文件路径第一部分中包含.~字符的任何字符,忽略实际文件名中的.。< / p>

我一直在尝试像[^.~]这样的事情,但我可能完全错了。

非常感谢任何意见或建议。

由于

1 个答案:

答案 0 :(得分:1)

如果您想要完全匹配Windows\System32\user32.dll,那么您的java正则表达式将是:^Windows\\\\System32\\\\user32[.]dll$

注意,你必须在java正则表达式中两次转义反斜杠,一次用于正则表达式,一次用于String。

E.g。

    java正则表达式中的
  • \\w用于\w(单词字符)
  • java正则表达式中的
  • \\\\w用于\w(斜杠和w)`

dot在regex中也有特殊含义,更好的转义(\\.)或者把它放在char-class中:[.]

然后,按照您的要求:

  

我需要做的是排除任何包含a的内容。或文件路径第一部分中的〜字符

你可以这样做:

^[^.~\\\\]+\\\\.+

匹配字符串:

  • 第一部分(在第一个反斜杠之前)不包含. or ~
  • 在第一个\之后它可能是任何东西。