プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/08 11:32

「2つ」が検出できれば「2つ以上」あることは確実なので、($_ に文字列が入っているとして)


  if (/test.*test/) {
    2つ以上ある
  }
のような判定でいいと思うのですが…
補足しますと、「.*」というのは、「そこに0個以上の文字がある」ということです。
したがって、これで「test 123 test」も「testtest」もマッチします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/08 11:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!