2011-02-02 18 views
7

Regexでは、[^abc]などのシンボルのリストを拒否できます。私は入力の途中で言葉全体を見て拒否したいと思います。Ruby Regex:全体の単語を拒否する

より正確に言えば、「<を印刷する」という言葉はすべて「>」以外のものを拒否したいと思います。 いくつかの例:

print all - match 
frokenfooster - no match 
print all nomnom - no match 
print bollocks - no match 
print allpies - no match 
+0

"私はマッチしたい"と感じ、あなたが提供した例は矛盾ですか? –

+0

ああ、そうだった。私のせい。 – Mike

答えて

11

あなたはnegative look-aheadを探しています。 (参照。using look-ahead and look-behind

(?!exclude) 

は、単語のパターンで "除外" を失格でしょう。

+0

パーフェクト。ありがとうございました。 – Mike

+0

@Mike:p.s.私はあなたが '^ print((?!all $)。*)$' ;-)を探していると思います。 –

+0

アンカーを逃しました。今弾丸に見える。 :) – Mike

2

正規表現では、単語区切り\bをサポートしています。文字列中の単語「すべて」の存在を検索

がするのと同じくらい簡単です:

>> 'the word "all"'[/\ball\b/] #=> "all" 
>> 'the word "ball"'[/\ball\b/] #=> nil 
>> 'all of the words'[/\ball\b/] #=> "all" 
>> 'we had a ball'[/\ball\b/] #=> nil 
>> 'not ball but all'[/\ball\b/] #=> "all" 

\bを認識するので、それは、文字列の先頭や末尾にそれを固定かかりませんでした単語の境界としての文字列の開始と終了。

+0

私はそれを知らなかった - それは本当に便利です。 – Mike

関連する問題