我有一个这样的字符串:
"xxxxxxx File_6547845_Whateverishere_S_Md.Txt yyyyyyyyyyyyy File_14787547_Whateverishere_S.Txt zzzzzzzzzzzzz"
我想只匹配以“file_number_text”开头并以“_s.txt”结尾的字符串NOT“_S_md.txt”
i tried "file_\d+?_.*?_s(?!_)\.txt"
但始终匹配字符串以“File_6547845”开头,包含“yyyyyy”,以“_s.Txt”结尾
答案 0 :(得分:0)
如果你的文件路径不能包含空格,只需使用.*?
的更具体的模式,比如\S*
,0 +非空白字符:
/file_\d+_\S*_s\.txt/i
如果路径中可能有空格,则很难找到安全模式。也许,匹配除.txt
子字符串之外的任何内容都可以提供帮助:
/file_\d+_(?:(?!\.txt).)*_s\.txt/i
请参阅this regex demo,其中(?:(?!\.txt).)*
匹配任何未启动.txt
子字符串的0 +字符。因此,此模式将上升到它可以在该行上找到的最后.txt
,然后将回溯查找_s.txt
。如果未找到,则匹配将失败,否则将返回匹配。