• ベストアンサー

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

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

  • Perl
  • 回答数2
  • ありがとう数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

  • 「判定条件網羅(分岐網羅)」について

    プログラム中に次の複合判定がある。 条件1 OR (条件2 AND 条件3) 判定条件網羅(分岐網羅)に基づいてテストする場合、 追加するテスト項目として適切なものは、どれか。 [終了したテスト項目] (1)条件1が真、条件2が偽、条件3が偽 (2)条件1が偽、条件2が真、条件3が真 正解:ア 解説には下記の内容が記載されています。 (1)条件1が真、条件2が偽、条件3が偽を条件式に当て嵌めます。 真OR(偽AND偽)=真OR(偽)=真 (2)条件1が偽、条件2が真、条件3が真を条件式に当て嵌めます。 偽OR(真AND真)=偽OR(真)=真 しかしその条件式が読めません。 何故、真OR(偽AND偽)=真OR(偽)=真に、 偽OR(真AND真)=偽OR(真)=真になるのですか。 真OR(偽)=真OR偽で、偽OR(真)=真OR偽ではないのですか。 お手数お掛けしますが、ご存知の方おられましたら、ご教授お願いします。 以上、よろしくお願い致します。

  • 【Excel2003VBA】セルの文字で条件分岐

    基本的な質問で恐縮ですが、Excel2003のVBAで条件分岐をするときの方法について質問です。 例えば、A1に文字列の「当選」と「あたり」があった場合は、真の処理を、それ以外の場合は偽の処理をする場合は条件式にどのように書けば良いのでしょうか? 次の【条件式】に入る書き方を教えてください。 sub 条件分岐()   If 【 条件式 】 Then     真の場合   Else     偽の場合 End sub

  • エクセルの条件付き書式で、複数の文字列を条件に並べたいのですが

    エクセルで、条件付き書式の条件を         文字列AAA 又は 文字列BBB 又は 文字列CCC のいずれかだったら としたいのですが、 ボックスにどのようにそれらの文字列を書いたらよいのでしょうか?

  • =IF(COUNTIFの文字列の複数条件

    A列にある契約先にある特定の文字列が含まれていた場合、B列に1か2の値を返したいです。 A列に契約先 (株)○○、(有)○○、(同)○○、(独)○○、(財)○○、○○大学、(同)○○ B列に契約先の種類を1と2で区別して、1か2の値を返したいです。 調べた結果、IF COUNTIFだと文字列の条件は一つに限るとの事で、文字列を複数にしたい場合どのような数式で値が返せますでしょうか。 下記のような数式ではだめでした。 =IF(COUNTIF(A1,"*(株)*",A1,"*(有)*",A1,"(同)"),"1","2") ちなみにCOUNTIFSというのもだめでした。 ほかにIF関数で文字列の複数条件で1か2を返せる数式がありましたら教えてください。 よろしくお願い致します。

  • 文字列から指定した文字を取り出す

    たとえば $test = "■-●-△-★-■■-■-■"; という文字列があったとして、 -で文字を区切り、■■は含めず■のみを取り出したい場合、 どのようにしたらいいのでしょうか。 $split = split("-",$test); $count_split = count($split); for($i=0; $i < $count_split; $i++){ if($split[$i] == "■"){ echo "{$split[$i]}"; } } としていますが、もっとスマートにできないのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ☆★☆ホワイトボックステストの条件網羅について質問です!☆★☆

    ☆★☆ホワイトボックステストの条件網羅について質問です!☆★☆ 判定条件網羅は、「判定文における真偽の分岐をいずれか少なくとも1回は実行する」となっており、 例えば A and B の条件があれば、 テストケースは No1 A=真 B=真 AandB=真 No2 A=真 B=偽 AandB=偽 No3 A=偽 B=真 AandB=偽 No3 A=偽 B=偽 AandB=偽 となり 要するに、判定条件網羅は「判定結果が真と偽になる結果をそれぞれ選べ!」と言うことで No1とNo2~No3のいずれかであると理解できます。 ・・・が、しかし 条件網羅は、「複数の条件が組み合わさっている場合、それぞれの条件について少なくとも1回は実行する」 と言った説明が教本ではされていましたが その答えが No2とNo3 となる理由が理解出来ません。 どなたか、条件網羅がなぜ上記のような回答となるのか ご説明を願いします。

  • 正規表現で特定の文字列に一致しない条件の指定

    正規表現で特定の文字列(2文字以上)に一致しない場合の条件指定は可能でしょうか? 例えば、[^CEG] と指定すると文字の「C」、「E」、「G」以外の文字にマッチするということになりますが、 複数の文字で構成された文字列で同じようなことをする方法はないのでしょうか? 例えば、「Japan」を含まないなどの指定方法を知りたいです。 以下の場合、文字列の途中に含まれている「Japan」を上手く見つけることができ、 1を除外し2と3だけがマッチする正規表現の指定方法が知りたいです。 1. 「この国はJapanです。」 2. 「この国はChinaです。」 3. 「この国はUSAです。」

  • 条件式 ! char[0] とは

    こんにちは。 char test[1]; if (! test[0]){ } この条件式 !test[0]の意味が分かりません。 test[0]がどういう状況のとき(どういう値が入っているとき)に 真、または偽になるのでしょうか? お分かりになる方よろしくお願いします。

  • 【excel】複数のセルを対象に特定の文字列

    EXCELでセルB24:D31に一つでも文字列Aが入っている場合 あるセルに文字列2を表示させて偽の場合文字列3を表示させたいのですが =IF(B24:D31="","",IF(SUM(COUNTIF(B24:D31,{"*文字列A*","*文字列A*"})),"文字列2","文字列3")) この式ではエラーになってしまい、どうにも作業が進みません。どなたか教えていただけませんでしょうか?

  • Excelで、if文での文字列の真偽の判定

    =if(B2="女",1,0) と式を書くと、B2に「女」と表示されている場合は1になりまずが、「 女」(←スペースがはいっている)「女性」などの場合には0(偽)になってしまいます。 「女」という字を含む文字列全てにたいして真(1)を返すような式はどうやって書けばいいのでしょうか? なにか演算子があるのでしょうか? よろしくお願いします。

専門家に質問してみよう