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

【JavaScript入門】正規表現で2〜3個の連続する「p」を含む文字列にマッチさせる方法

JavaScriptの正規表現(RegExp)で、2個〜3個の連続する「p」を含む任意の文字列にマッチさせたい場合は、量指定子(Quantifier)の p{2,3} を使用します。

量指定子 {2,3} の基本

{2,3} は「直前の文字またはパターンが、最低2回、最大3回繰り返される」ことを意味します。
つまり p{2,3} と書けば、「pp」や「ppp」のような並びにマッチし、4個以上並んでいる場合は先頭から3個分だけがマッチ対象になります。

サンプルコード:2〜3個の「p」にマッチさせる

<html>
  <head>
    <title>JavaScript Regular Expression</title>
  </head>
  <body>
    <script>
      var myStr = "apple pineapple pp ppppp";
      var reg = /p{2,3}/g;
      var match = myStr.match(reg);

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

フラグ g を付けることで、文字列全体から該当するすべての箇所が配列として取得できます。

応用例:2〜3桁の数字にマッチさせる

同じ考え方は数字にも応用できます。\d{2,3} と指定すれば、2桁または3桁の数値にマッチします。

<script>
  var myStr = "Welcome 1, 10, 100, 1000";
  var reg = /\d{2,3}/g;
  var match = myStr.match(reg);

  document.write(match); // 出力例: 10,100,100
</script>

上記の例では「1」は1桁のためマッチせず、「10」「100」はそのままマッチし、「1000」は先頭の3桁「100」のみが抽出されます。

まとめ

{最小回数,最大回数} の形式の量指定子を使うことで、繰り返し回数を柔軟に指定したパターンマッチングが実現できます。文字でも数字でも同じ書式で利用できるため、データの検証や抽出の際に非常に便利です。

  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):