正则表达式,查找字符串包含但不以

时间:2011-05-03 20:31:33

标签: ruby regex

我正在解析一个文本文件,遍历每一行,而我在查找正则表达式时遇到了麻烦。这种解析的一部分涉及改变出现,例如:

&安培; Eacute;和& eacute;

我尝试了以下正则表达式,但它没有返回任何内容:

/^(?!&)(É)/

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

所以,只有当É不在行的开头时才想匹配它?

使用

/(?<=.)&Eacute;/

(假设Ruby 1.9因为1.8不支持lookbehind)

基本原理:.匹配除换行符之外的任何字符。因此,如果后视断言匹配,我们就不在行的开头。

答案 1 :(得分:2)

如果您使用的是Ruby 1.9,则可以像这样使用lookbehind:

t.gsub! /(?<=.)&Eacute;/, '&eacute;'

在Ruby 1.8中,你需要求助于这样的事情:

while t =~ /(.)&Eacute;/
    t.sub! /(.)&Eacute;/, "#{$1}&eacute;"
end

其中t是要修改的字符串。

答案 2 :(得分:0)

如果你想在行的任何地方匹配&Eacute;,而不是在第一个位置匹配:

/^.+(&Eacute;)/

这与例如"abc&Eacute;def",但不是"&Eacute;"

更新:Tim指出的修正错误