2011-07-28 4 views
6

私は2つまでの文字を正規表現にマッチさせようとしています。Regex不足している文字を含む単語を見つけるには

ハロー 地獄 HELO hllo ello HEL HEO ELO

LLO

私は正規表現hを使用することができます。たとえば、関心の言葉は、「ハロー」私は以下の文字列を一致させたいであれば?e?l?l?o?これらに一致するようにしますが、0,1,2の文字列とも一致します。マッチの長さを3〜5文字にするにはどうすればよいですか?

ありがとうございました。

答えて

6

あなたはそれらの文字の3-5を確認するために先読みを使用することができます。

(?=[hello]{3,5})h?e?l?l?o? 

helphelが含まれているので、これはhelpような文字列のように試合を見つけること。あなたがあなたの状況に応じて単語の境界や文字列の終わりをチェックすることができることをstpしたい場合。刺しゅうの端に一致させたい場合は、最初に^を追加し、最後に$を追加します。単語境界をチェックする場合は、両端に\bを追加します。

+0

完璧、おかげ – PeterM

1

あなたはこのような何か試すことができます:私はこれが((?=.{3,})h?e?l?l?o?)働くだろうと思い

[hello]{3,5} 
+0

それは '一致しますolleh'または 'hhhhh' - 私はOPがそれを望んでいるとは思わない。 ps修正されたマイナーエラー:3,4 - > 3,5 – Bohemian

3

- 「少なくとも3つの文字」で、あなたの正規表現は、上の追加しました。

あなたはおそらく全体の単語だけでなく(「hellow」のようなものではなくスタート)と一致するので、開始と終了に\bを追加するだけにこれをしたい:\b((?=.{3,})h?e?l?l?o?)\b

関連する問題