正则表达式嵌套类似字符串

时间:2017-01-23 13:15:46

标签: regex

我有一个这样的字符串:

"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”结尾

1 个答案:

答案 0 :(得分:0)

如果你的文件路径不能包含空格,只需使用.*?的更具体的模式,比如\S*,0 +非空白字符:

/file_\d+_\S*_s\.txt/i

请参阅this regex demo

如果路径中可能有空格,则很难找到安全模式。也许,匹配除.txt子字符串之外的任何内容都可以提供帮助:

/file_\d+_(?:(?!\.txt).)*_s\.txt/i

请参阅this regex demo,其中(?:(?!\.txt).)*匹配任何未启动.txt子字符串的0 +字符。因此,此模式将上升到它可以在该行上找到的最后.txt,然后将回溯查找_s.txt。如果未找到,则匹配将失败,否则将返回匹配。