我有一个字符串:
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(?:[^=])/
但仍然得到了相同的结果。如何将结果限制为“课堂”?感谢
答案 0 :(得分:2)
你几乎是正确的,但是你的前瞻性有误。试试这个:
/\bclass(?!=)/
正则表达式术语(?!=)
表示右侧输入必须与字符'='不匹配
答案 1 :(得分:0)
您可以使用变量 string 并使用组提取子部分:
substring = string[/\b(class)[^=]/, 1]
class 周围的括号将其设置为第一个“组”,由1作为方括号中的第二个参数引用。
答案 2 :(得分:0)
假设您唯一的问题是阻止它与span.class.blah匹配,请忽略。同样,[^=.]
。