- ベストアンサー
指定した文字列を複数含むという条件
たとえば、「test」という文字列を2個含む場合に真を返すような条件を作れません。 「2つ以上」ではなくて、「2つ」でもけっこうです。 「test」という文字列が1つであれば偽、2つならば真にしたいでのす。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
()で囲んで、\1で後方参照します。以下サンプルです。 >cat sample.pl while( <> ) { if ( /(test).*\1/) { print $_; } } >cat test.txt 1:test 2:test test 3:test aaa test 4:test test test >perl sample.pl test.txt 2:test test 3:test aaa test 4:test test test
その他の回答 (1)
- ysk6406
- ベストアンサー率40% (237/589)
回答No.2
「2つ」が検出できれば「2つ以上」あることは確実なので、($_ に文字列が入っているとして) if (/test.*test/) { 2つ以上ある } のような判定でいいと思うのですが… 補足しますと、「.*」というのは、「そこに0個以上の文字がある」ということです。 したがって、これで「test 123 test」も「testtest」もマッチします。
質問者
お礼
ありがとうございました。
お礼
ありがとうございました。