忽略HTML实体的正则表达式

问题描述:

我需要JavaScript中的正则表达式,它执行以下操作。忽略HTML实体的正则表达式

那些不是HTML实体部分的a的实例应替换为w

例:

abc should change to wbc 

aabacaa should change to wwbwcww 

&abcaa& should change to &wbcww& 

等。

我正在使用JavaScript。

任何帮助表示赞赏。

+0

你是否需要考虑所有HTML实体(如'¶')?或者只是'&'。如果你需要考虑所有问题,我的答案是不正确的(我会删除它)。 – 2010-02-09 12:21:18

+0

你想用什么工具? – Vijay 2010-02-09 12:23:57

试试这个:

"&abcaa&".replace(/&[^;]+;|a/g, function($0) { 
    return $0 === "a" ? "w" : $0; 
}) 
+0

整洁!我真的应该学习JavaScript。 – 2010-02-09 12:26:02

+0

这不会将& b转换为w & b – Varun 2010-02-09 12:54:42

+0

@Varun:是的。 – 2010-02-09 13:03:10

非正则表达式的方式,在您最喜爱的编程语言,分割你的字符串“&一”(或&),更换分裂的项目,然后再加入回如在Python

>>> s="&abcaa&" 
>>> '&a'.join([ i.replace("a","w") for i in s.split("&a") ]) 
'&wbcww&' 

作为一个更普遍的答案,写正则表达式时,我做的第一件事就是去http://rubular.com打下了几个测试的字符串。然后,我编写并重新编写正则表达式,直到它满足需要。

是的,我知道Rubular是一个Ruby regex站点,但是对于大多数语言(我认为Perl使用扩展语法),RegExp语法非常相似。我已成功使用Rubular来测试Java RegExps。