2017-01-23 4 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 

.txt部分文字列を開始しません(?:(?!\.txt).)*マッチ任意の0+文字this regex demoを参照してください。したがって、このパターンは、最後に.txtになります。そして、それは_s.txtを探して後退します。見つからなければ、マッチは失敗し、そうでなければ、マッチが返されます。

+0

はうまくいった。ありがとう。 –