Ruby Regex:拒绝整个单词

时间:2011-02-02 20:16:54

标签: ruby regex

我知道在Regex中,您可以拒绝符号列表,例如[^abc]。我想在输入的中间看到一个完整的单词时拒绝。

更确切地说,我想拒绝“print<除了”all“>”之外的任何事情。 几个例子:

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

2 个答案:

答案 0 :(得分:12)

您正在寻找negative look-ahead。 (参考 using look-ahead and look-behind

(?!exclude)

会取消模式中“排除”一词的资格。

答案 1 :(得分:2)

正则表达式支持分词\b

在字符串中搜索单词“all”的存在非常简单:

>> '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也将字符串的开头和结尾识别为字边界。