正则表达式,如何限制匹配

时间:2011-06-08 03:12:34

标签: ruby regex

我有一个字符串:

string = %q{<span class="no">2503</span>read_attribute_before_type_cast(<span class="pc">self</span>.class.primary_key)}

在这个例子中,我希望匹配不在标签中的单词“class”。正则表达式:

/\bclass[^=]/

但问题是它匹配最后一个字母

/\bclass[^=]/.match(string) => 'class.'

我不希望在结果中有最后一个点。我试过这个正则表达式:

/\bclass(?:[^=])/

但仍然得到了相同的结果。如何将结果限制为“课堂”?感谢

3 个答案:

答案 0 :(得分:2)

你几乎是正确的,但是你的前瞻性有误。试试这个:

/\bclass(?!=)/

正则表达式术语(?!=)表示右侧输入必须与字符'='不匹配

答案 1 :(得分:0)

您可以使用变量 string 并使用组提取子部分:

substring = string[/\b(class)[^=]/, 1]

class 周围的括号将其设置为第一个“组”,由1作为方括号中的第二个参数引用。

答案 2 :(得分:0)

假设您唯一的问题是阻止它与span.class.blah匹配,请忽略。同样,[^=.]