次の文を正規表現(javascript)で解析しようとしています:
- テレビがほしい
- チョコレートが欲しい
- 私は火が必要です
現在、私は試しています:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
しかし、うまくいきません。私もいくつかのテストを行いまし\w
たが、運がありませんでした。
「I」と最後の単語の魔女の間の任意の単語 (最大 5 単語) を許可したいです。
次の文を正規表現(javascript)で解析しようとしています:
現在、私は試しています:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
しかし、うまくいきません。私もいくつかのテストを行いまし\w
たが、運がありませんでした。
「I」と最後の単語の魔女の間の任意の単語 (最大 5 単語) を許可したいです。
単語間の非単語文字を考慮するには、次を使用できます。
/I(?:\W+\w+){0,5}\W+(?:TV|chocolate|fire)/
正規表現のデモを見る
ポイントは、単語の境界を追加しましたが、「単語」間のスペース、句読点など (他のすべての単語以外の文字) を考慮していないことです。
パターン詳細:
I
- 左区切り文字に一致(?:\W+\w+){0,5}\W+
- 1 つ以上の非単語文字 ( ) とその後の 1 つ以上の単語文字 ( ) の0 から 5 つのシーケンス (制限量指定子{n,m}
による) に一致し、末尾の a は、存在する必要がある 1 つ以上の非単語文字に一致します。最後に一致した単語の文字を...から分離します\W+
\w+
\W+
(?:TV|chocolate|fire)
- 末尾の区切り文字に一致スペースを気にしない場合は、次を使用します。
/I(\s[a-zA-Z]*\s?){0,5}(TV|chocolate|fire)/
試す
/I\s+(?:\w+\s+){0,5}(TV|chocolate|fire)/
(ここでテスト)
Stefan Kert のバージョンに基づいていますが、単語の境界ではなく、余分な各単語の右側のスペースに依存しています。
また、任意の長さの有効な「単語」 (\w) 文字の単語と、有効な空白文字 (繰り返しを考慮しない) も受け入れます。