我正在解析一个文本文件,遍历每一行,而我在查找正则表达式时遇到了麻烦。这种解析的一部分涉及改变出现,例如:
&安培; Eacute;和& eacute;
我尝试了以下正则表达式,但它没有返回任何内容:
/^(?!&)(É)/
有什么建议吗?
答案 0 :(得分:5)
所以,只有当É
不在行的开头时才想匹配它?
使用
/(?<=.)É/
(假设Ruby 1.9因为1.8不支持lookbehind)
基本原理:.
匹配除换行符之外的任何字符。因此,如果后视断言匹配,我们就不在行的开头。
答案 1 :(得分:2)
如果您使用的是Ruby 1.9,则可以像这样使用lookbehind:
t.gsub! /(?<=.)É/, 'é'
在Ruby 1.8中,你需要求助于这样的事情:
while t =~ /(.)É/
t.sub! /(.)É/, "#{$1}é"
end
其中t是要修改的字符串。
答案 2 :(得分:0)
如果你想在行的任何地方匹配É
,而不是在第一个位置匹配:
/^.+(É)/
这与例如"abcÉdef"
,但不是"É"
更新:Tim指出的修正错误