早些时候,我尝试了一些正则表达式来修剪<!-- and -->
(包括这些标记以及)之间的字符串,但没有成功。正则表达式 - 删除<!-- and -->之间的字符
你能告诉我一些关于这个问题的信息吗?
早些时候,我尝试了一些正则表达式来修剪<!-- and -->
(包括这些标记以及)之间的字符串,但没有成功。正则表达式 - 删除<!-- and -->之间的字符
你能告诉我一些关于这个问题的信息吗?
我冒昧地添加's'修饰符:默认情况下'.'与大多数正则表达式实现中的换行符都不匹配(使用's')。 –
@BartKiers:thanx,赞赏 –
以匹配文本看起来像XML注释(非常接近HTML注释规则的评论规则)你想要的东西是这样的:
<!--.*?-->
假设你的语言的RE引擎支持非贪婪的量词。去除需要在整个输入文本中重复匹配,并替换空字符串;其语法取决于所讨论的语言。
没有非贪婪量词,事情变得更加复杂(NB,这是稍微偏离了HTML注释,但你真的不想学习差的细节):
<!--([^-]|-[^-])*-->
注意--
是不应该在XML注释中遇到的,除非它后面跟着>
;这是XML评论的本质的一部分...
@Johnsyweb这只是明显错误的。 HTML中的评论不能包含其他评论,所以你不会遇到模棱两可的标记问题 - 评论只是文本以“ - >”序列结尾(评论中的任何地方的序列将结束它,你不能逃避它) – MBO
@MBO:在评论中,“ - >”明确地表示评论的结尾。但是,“<! - ”不一定是评论的开始。这可能会导致可利用的表面。例如如果此后的过滤完成,那么可能会剥离事件属性的东西可能会很容易受到阻碍:'-->" onmouseover="alert('uh oh')">Ooh! Move over me!'。即使使用正则表达式来解析*注释*可能是一个坏主意。 –
@ChrisMorgan好点,我没有考虑标签内部的评论开始......所以这仍然是一个难题。 – MBO