4

正規表現を作成するのに助けが必要です。文字列内の特定の単語を探すソフトウェアをプログラミングしています。しかし、フレーズも探す必要があります。この文字列は、ユーザーがテキスト ボックスに入力します。

現在、次の正規表現を使用してスペースをアンパサンドに\s+置き換えています。 word1 word2 word3word1&word2&word3

私の新しい要件には、Google でのフレーズの検索のように、引用符で囲まれたフレーズを含める必要があります。

"word1 word2" "word3 word4" word5

でなければなりません:

word1 word2&word3 word4&word5

前もって感謝します。

編集:同じことを行う別の方法または別のアプローチがある場合、私はどんなアイデアにもオープンです。

4

1 に答える 1

6

これは、クエストのバランスが取れていることを前提としています。クエストの数は偶数であり、単語の途中にあるクエストではありません。

一致させることができます/"([^"]+)"|(\S+)/- これはあなたの言葉になります - 引用符で囲まれた文字列または非スペース。グループ 1または2の単語をキャプチャし、区切り記号joinを使用して結果を取得できます。&

別のオプション: トークンをスキップすることにより、最初のパターンと非常によく似た方法で、1 回の置換で取得できます。JavaScript の例を次に示します。

s = s.replace(/(?:"([^"]+)"|(\S+))\s*/g, '$1$2&');

(文字列の最後に余分なアンパサンドがあることに注意してください)

于 2012-05-06T06:12:29.643 に答える