我现在一直在乱用正则表达式,我似乎无法做到正确。
我有一个包含一些文件信息和路径的文本文件。我想搜索的文字是:
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>
我一直在尝试像[^.~]
这样的事情,但我可能完全错了。
非常感谢任何意见或建议。
由于
答案 0 :(得分:1)
如果您想要完全匹配Windows\System32\user32.dll
,那么您的java正则表达式将是:^Windows\\\\System32\\\\user32[.]dll$
注意,你必须在java正则表达式中两次转义反斜杠,一次用于正则表达式,一次用于String。
E.g。
\\w
用于\w
(单词字符)\\\\w
用于\w
(斜杠和w)` dot在regex中也有特殊含义,更好的转义(\\.
)或者把它放在char-class中:[.]
然后,按照您的要求:
我需要做的是排除任何包含a的内容。或文件路径第一部分中的〜字符
你可以这样做:
^[^.~\\\\]+\\\\.+
匹配字符串:
. or ~
\
之后它可能是任何东西。