3

次の文を正規表現(javascript)で解析しようとしています:

  • テレビがほしい
  • チョコレートが欲しい
  • 私は火が必要です

現在、私は試しています:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)しかし、うまくいきません。私もいくつかのテストを行いまし\wたが、運がありませんでした。

「I」と最後の単語の魔女の間の任意の単語 (最大 5 単語) を許可したいです。

4

4 に答える 4

4

単語間の非単語文字を考慮するには、次を使用できます。

/I(?:\W+\w+){0,5}\‌​W+(?:TV|chocolate|fir‌​e)/

正規表現のデモを見る

ポイントは、単語の境界を追加しましたが、「単語」間のスペース、句読点など (他のすべての単語以外の文字) を考慮していないことです。

パターン詳細:

  • I- 左区切り文字に一致
  • (?:\W+\w+){0,5}\‌​W+- 1 つ以上の非単語文字 ( ) とその後の 1 つ以上の単語文字 ( ) の0 から 5 つのシーケンス (制限量指定子{n,m}による) に一致し、末尾の a は、存在する必要がある 1 つ以上の非単語文字に一致します。最後に一致した単語の文字を...から分離します\W+\w+\W+
  • (?:TV|chocolate|fir‌​e)- 末尾の区切り文字に一致
于 2016-08-17T08:27:23.280 に答える
0

スペースを気にしない場合は、次を使用します。

/I(\s[a-zA-Z]*\s?){0,5}(TV|chocolate|fire)/

于 2016-08-17T08:27:39.280 に答える
0

試す

/I\s+(?:\w+\s+){0,5}(TV|chocolate|fire)/

(ここでテスト)

Stefan Kert のバージョンに基づいていますが、単語の境界ではなく、余分な各単語の右側のスペースに依存しています。

また、任意の長さの有効な「単語」 (\w) 文字の単語と、有効な空白文字 (繰り返しを考慮しない) も受け入れます。

于 2016-08-17T08:40:53.823 に答える