2017-02-11 2 views
0

でワード境界で除外なっている私には、以下の正規表現を持っている:なぜですか。正規表現

\b[_\.][0-9]{1,}[a-zA-Z]{0,}[_]{0,}\b 

は私の入力文字列は次のとおりです。

  1. _49791626567342fYbYzeRESzHsQUgwjimkIfW
  2. .49791626567342fYbYzeRESzHsQUgwjimkIfW

私がいることを前提とします1.2.と一致しますが、最初のシーンでのみ一致していますアリオ。あなたは私が正規表現の間違いを見つけるのを助けることができますか?

+0

正規表現フォントを標準形式に変更します。 –

+1

'.'の前には単語境界がありません。なぜそこにあるのだろうか?それの前後には言葉がありません。 – Biffen

+0

問題は[_ \。]のみです。理由は分かりません – harsh

答えて

3

単語境界は、単語文字(文字、数字、アンダースコア)と単語以外の文字、または文字列の先頭または末尾の境界です。したがって、単にドット(単語以外の文字)と文字列の先頭の間には単語境界がありません。

あなたは

^[_\.][0-9]{1,}[a-zA-Z]{0,}[_]{0,}$ 

のようにあなたがとしても、*+数量詞を使用して、不要なエスケープシーケンスを避けることによって、あなたの正規表現ビットを短縮することができ、文字列の開始を通知するために、この場合にはアンカーを使用することができます(利用可能な場合)あなたはまた、自分でカスタム境界を構築するために先読みと後読みを使うことができToto

^[_.][0-9]+[a-zA-Z]*_*$ 

によって提案されました。

+0

ありがとうございました – harsh

+2

これは以下に減らすことができます: '^ [_。] [0-9] + [a-zA-Z] * _ *' – Toto

+0

@Totoはいそれは(私の答えにそれを含めた)ことはできますが、機能的な違いはありません。だから私はそれに集中しませんでした。 –

関連する問題