2017-01-23 24 views
1

我有一個這樣的字符串:正則表達式嵌套相似字符串

"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

查看https://regex101.com/r/L3A2QN/1 –

+0

你想匹配字符串中的整個字符串或文本與你的正則表達式? – Niitaku

+0

只有「File_14787547_Whateverishere_S.Txt」 –

回答

0

中結束。如果你的文件路徑不能包含空格,只使用insteaf的更具體的模式.*?,比方說,\S*,0+非空白字符:

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

this regex demo

如果有可能的路徑內部的空間,這將是非常困難的拿出一個安全模式。也許,匹配任何東西,但.txt子可以幫助:

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

this regex demo,其中(?:(?!\.txt).)*任何0+字符不啓動.txt串匹配。所以,這種模式將上升到最後的.txt它可以找到的行,然後將回溯尋找_s.txt。如果沒有找到,比賽將失敗,否則,比賽將返回。

+0

工作得很好。謝謝 。 –

相關問題