2011-12-02 18 views
2

単語で誤って一致しないように文字列を一致させる必要があります。たとえば、文字列 "de"と一致するとしましょう。私はそれは、これらの文字列にマッチさせたい:RubyとNull文字の正規表現マッチング

"de" 
" de" 
"de " 
" de " 
" de " 
"I like the term de very much" 

そして、そのようなことを、私はそれが

"dead" 
" delaware" 
"This is delaware" 

等のような文字列が一致する必要はありません誰かが私のような正規表現で助けてくれますか?

答えて

2

単語deと一致させたいと思います。これを行うには、それはワード境界に始まり、終わると主張:

\bde\b 

私はあなたの例は、単に(オプションの先頭と末尾のスペースを持つ)一つだけの単語を含む文字列で構成されていることに注意してください。しかし、あなたの質問には一致する文字列には単語が1つしか含まれていないと規定されていないので、これが必須かどうかは不明です。上の正規表現は、文字列に他の単語があるかどうかにかかわらず、単語deを含む文字列と一致します。たとえば、この文字列が一致します。

"here come de judge" 

をこの文字列はありません。

"here come der judge" 
+0

申し訳ありませんが、 '\のw'は '言葉' のシンボルです。ワード境界の特殊文字は '\ b'です。 –

+0

ヒップからの撮影に適しています。一定。 – MetaEd

2

/^\s*de\s*$/' de 'のような文字列を一致させるためにはうまくいくと思います。その場合、^は文字列の先頭に一致します。$ - 文字列の末尾に\s* - 空白のシーケンス(空の場合もあります)とdeが実際に探しているものです。

一般的なケースでは、単語境界の特殊記号 - \bがあります。例を参照してください:

/de/ =~ ' de '  # matches 
/de/ =~ ' rder '  # matches as well, but you don't want that 

/\bde\b/ =~ 'de'   # matches 
/\bde\b/ =~ 'qwe de rew' # matches as 'de' is a separate word 
/\bde\b/ =~ ' rder '  # doesn't match as 'de' is not surrounded by word 
         # boundaries so it's not a separate word 
関連する問題