2017-09-11 6 views
1

私は、このような正規表現英数字を除外する

ELL 
ELLs 
The ELL 
Which ELLs 
として出力を期待して、検索文字列 [^0-9a-zA-Z]*ELL[^0-9A-Z]*

など、スペース、[^0-9a-zA-Z]*除外はすべての英数字文字を思ったが、特殊文字を可能にし

しかし、次の出力も得られます

Ellis Island 
Bellis 

これを修正するにはどうすればよいですか?

+2

[ワード境界でパターンを囲みます](https://regex101.com/r/9lAaTj/1)?要件は何ですか? –

+0

@WiktorStribiżewRegexは 'ELL'と 'ELLs'をキャプチャする必要があります – Rhonda

+0

なぜこれらの部分文字列をキャプチャする必要がありますか?なぜマッチしないの?期待される結果は何ですか? –

答えて

1

あなたが使用すること

(?:\b|_)ELLs?(?=\b|_) 

regex demoを参照してください。

_または単語以外の文字で囲まれている場合、または文字列の先頭/末尾にある場合、ELLまたはELLsが見つかります。

詳細

  • (?:\b|_) - 非捕捉交替ワード境界位置(\b)に一致する基または(|_
  • ELLs?からs?マッチ1ためELL又はELLsと一致または0 s chars
  • (?=\b|_) - 偽の存在を必要とする肯定的な先読み現在の位置のすぐ右に境界線または_が表示されます。
1

*を* to +

*と変更してください。 A +は1つ以上を意味します。あなたはおそらくかかわらず、欲しいのは単語boundryされています。それが開始または終了する場合は、\ Wと\ W(非単語の文字)、または文字列の先頭または末尾の間に位置

\bELL\b 

ワードboundryです(それぞれ)を単語文字([0-9A-Za-z_])で置き換えます。もっとここにそのことについて: What is a word boundary in regexes?

関連する問題