【发布时间】:2020-10-22 06:42:49
【问题描述】:
我几天来一直在尝试解决一个正则表达式测验,但仍然无法正确解决。我已经很接近了,但仍然无法通过。
任务:
在 HTML 页面中,将文本
micro替换为&micro;。哦,不要搞砸代码:不要在<the tags>或&entities;内部替换
替换
-
micro->&micro; -
abc micro->abc &micro; -
micromicro->&micro;&micro; -
&micro;micro->&micro;&micro;
请勿触摸
-
<tag micro />-><tag micro /> -
&micro;->&micro; -
&abcmicro123;->&abcmicro123;
I tried this 但在最后一个&micro; 上失败了,我错过了什么?有人能指出我错过了什么吗?提前致谢!
我尝试过的:
正则表达式
((?:\G|\n)(?:.*?&.*?micro.*?;[\s\S]*?|.*?<.*?micro.*?>[\s\S]*?|.)*?)micro
替换
$1µ
【问题讨论】:
-
Regex 不是解析 HTML 的正确工具
-
使用正则表达式真的很难。如果您不想在某些情况下进行匹配,则必须使用否定的lookbehind,但它们必须是固定大小,因此您不能使其在
<tag之后的任何地方都不匹配。 -
这是一个quiz on regex101。我能感觉到这真的很难解决,但也许我一开始就走错了路。只需要一个正确方向的提示。
-
祝你好运。想想 HTML cmets、脚本标签、CDATA、值中具有
>的属性等等,等等……如前所述,正则表达式不是解析 HTML 的正确工具。
标签: regex pcre substitution