• ベストアンサー

指定した文字列を複数含むという条件

たとえば、「test」という文字列を2個含む場合に真を返すような条件を作れません。 「2つ以上」ではなくて、「2つ」でもけっこうです。 「test」という文字列が1つであれば偽、2つならば真にしたいでのす。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

()で囲んで、\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

saru_monmon
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.2

「2つ」が検出できれば「2つ以上」あることは確実なので、($_ に文字列が入っているとして)   if (/test.*test/) {     2つ以上ある   } のような判定でいいと思うのですが… 補足しますと、「.*」というのは、「そこに0個以上の文字がある」ということです。 したがって、これで「test 123 test」も「testtest」もマッチします。

saru_monmon
質問者

お礼

ありがとうございました。

関連するQ&A