JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptの正規表現で「p」が2回以上連続する文字列にマッチさせる方法

JavaScriptの正規表現(RegExp)を使って、「p」が少なくとも2回連続して含まれる任意の文字列にマッチさせたい場合は、量指定子(Quantifier)である p{2} を使用します。

{2} は「直前の文字が2回以上繰り返される」ことを意味します。さらに末尾に g フラグを付けると、文字列内のすべての該当箇所を一度に検索できます。

サンプルコード

<html>
   <head>
      <title>JavaScript Regular Expression</title>
   </head>
   <body>
      <script>
         var myStr = "Happy Apple Puppy";
         var reg = /p{2}/g;
         var match = myStr.match(reg);

         document.write(match);
      </script>
   </body>
</html>

実行結果

["pp", "pp"]

この例では、/p{2}/g パターンによって、文字列内で「p」が2回以上連続している部分がすべて配列として取得されます。「Happy」の「pp」と「Apple」の「pp」がマッチ対象となっています。なお、「Puppy」のように1文字だけの「p」はマッチしません。

補足:主な量指定子の一覧

  • p+ … 1回以上の繰り返しにマッチ
  • p* … 0回以上の繰り返しにマッチ
  • p{2} … ちょうど2回の繰り返しにマッチ
  • p{2,4} … 2回以上4回以下の繰り返しにマッチ

用途に応じてこれらの量指定子を使い分けることで、柔軟なパターンマッチングが可能になります。

  1. Pythonで解く「DI文字列マッチ」問題 ― 条件を満たす順列の求め方

    問題の概要 「I」(増加:Increase)と「D」(減少:Decrease)のみで構成された文字列 S が与えられます。S の長さを N とするとき、[0, 1, ..., N] の順列 A のうち、すべての i(0 ≤ i ≤ N−1)について次の条件を満たすものを任意に 1 つ返してください。 S[i] が「I」の場合:A[i] < A[i+1] S[i] が「D」の場合:A[i] > A[i+1] たとえば、入力が IDID の場合、出力は [0, 4, 1, 3, 2] となります。 解法のアプローチ この問題は貪欲法(グリーディ法)を使うことでシンプルに解けます。手

  2. Pythonで複数の文字列のいずれかが別の文字列に含まれているか判定する方法

    Pythonでは、リスト内の複数の文字列のうち、どれか1つでも別の文字列に含まれているかどうかを調べたい場面がよくあります。そんなときに便利なのが、組み込み関数 any() を使った方法です。 any() 関数を使う基本的な方法 any() は、引数に渡したイテラブルの中に真と評価される要素が1つでもあれば True を返します。ジェネレータ式と組み合わせることで、各文字列が対象の文字列に含まれているかを簡潔に判定できます。 例 arr = [a, e, i, o, u] text = hello people if any(c in text for c in arr):