2016-11-04 6 views
1

'r d'のコンパイル以外のすべての文字を削除しようとしています。いくつかの例をより明確にするために:コンパイル以外の1文字を削除する

a ball -> ball r something -> something d someone -> someone r d something -> r d something r something d -> something

今まで私はrまたはdから除いた文字を削除するために管理が、これは私が欲しいものではありません。コンパイルだけを残したい(ex.4)。誰がそれを行うには

\b(?!r|d)\w{1}\b

任意のアイデア:私はこれを使うのか?

:regエンジンはlookbehindsをサポートしています。

+1

正規表現エンジンとは何ですか?それはlookbehindsをサポートしていますか? 'r'と' d'の間に複数のスペースを許す必要がありますか? – Ryan

答えて

1

あなたはr d組み合わせをキャプチャし、その組み合わせを復元するために、置換パターンで後方参照を使用し、他のすべての一致を削除することがあります。

\b(r d)\b|\b\w\b\s* 

regex demoが(バックにr dを置くこと$1と交換を参照してください。結果)。

詳細

    \b(r d)\b
  • - 又は
  • \b\w\b\s* - - 1つの文字/数字/成る単一単語全体グループ1
  • |
  • に取り込まれる "全語" r dアンダースコア(\b\w\b)に続いて0以上の空白が続く(\s*、余分な余白を取り除くために必要ないかもしれない)。
+0

説明をありがとう! '\ s *'は '+'と同じですか? –

+0

'\ s'は空白記号と一致します(セットは正規表現の味によって異なります)。リテラルスペースは通常のスペースにのみ一致します。上記のあなたのregex101のリンクでは、マッチを空の文字列に置き換えたので、キャプチャしたテキストもすべて削除しました。 [置換文字列として '$ 1'を使う](https://regex101.com/r/GU3skZ/2)私の答えを見てください:***(' $ 1'と置き換えて 'rd'を結果に戻します)*** –

+0

ああ、それは後で見た。とにかく感謝:) –

関連する問題