0

私は絶対的な正規表現の初心者であり、次のような文字列から電子メールの署名を削除するために正規表現を書き込もうとして、壁に頭をぶつけてきました。

Hi There, this is an email.

Warm Regards,

Joe Bloggs

これまでのところ、私は以下のバリエーションを試しました:

/^[\w |][R|r]egards,/

正規表現は次のようにする必要があります。

  1. 行の先頭を見てください(私が目指していたのは^
  2. 「WarmRegards」、「Kind Regards」、「Best Regards」、昔ながらの「Regards」などのバリエーションをカバーします(これは、[\w |]任意の単語または空白に一致し、 [R|r]Regards / Regardsをカバーするために達成したいと思っていました)。
  3. 「よろしくお願いします」や「よろしくお願いします」などの大文字小文字の区別は問題ありません。
  4. どこかに「よろしく」という言葉が含まれているメール本文を取得しないように、[word] Regardsまたは単にの口説き文句のみ。regards

これは初歩的なようですが、私はそれを釘付けにすることができず、「よろしく」を含む行がピックアップされるように正規表現を広げすぎることに誤りがあるようです。string.searchそれが重要な場合は、関数と組み合わせてNode.jsでこれを実行しています。

4

4 に答える 4

2

これはすべての要件に適合するようです。

^(\w*\s)?[r|R]egards,?

改行で開始する必要があります。その後、任意の単語の後にスペースを含めることができます。単語は、または単に単語を考慮します。コンマもオプションです。

よろしくラインの後ですべてを一掃したい場合も追加することができます\s*.*

^(\w*\s)?[r|R]egards,?\s*.*
于 2013-02-01T21:03:46.773 に答える
1

あなたがWarm Regards上の行からすべてを削除しようとしているなら、これはそれをするべきです

^[^<]*?(?=(.*)[R|r]egards)

于 2013-02-01T21:04:59.307 に答える
1

次の正規表現を試してください

^\w* ?regards,?

大文字と小文字を区別せず、グローバルフラグが指定されています。

正規表現の説明とそれに一致するものは、http: //regex101.com/r/vR3zG5で確認できます。

于 2013-02-01T21:05:08.743 に答える
1

#1-#4で定義された署名に一致する正規表現は次のとおりです。

/^(\w+ +)?regards,? *$/im

使い方:

  • 冒頭の「^」は改行を意味します
  • 「(\ w + +)?」正確に1つの単語とそれに続く少なくとも1つのスペースを含むオプションのセグメントを意味します
  • 「よろしく」は単純な一致です
  • 「、?」末尾のオプションのコンマ
  • "*"-行に末尾のスペースが含まれる場合があります(^の後に同じ一致を付けると便利な場合があります)
  • "$"-行末
  • /.../i-式で大文字と小文字が区別されないことを意味します
  • /.../m-^と$が改行で一致することを意味します
于 2013-02-01T21:21:55.207 に答える