【发布时间】:2010-02-06 13:19:25
【问题描述】:
我用
(?<!value=\")##(.*)##
匹配 ##MyString## 之类的字符串,但格式不是:
<input type="text" value="##MyString##">
这适用于上述形式,但不适用于此:(它仍然匹配,不应该匹配)
<input type="text" value="Here is my ##MyString## coming..">
我试过了:
(?<!value=\").*##(.*)##
没有运气。任何建议将不胜感激。
编辑:我正在使用 PHP preg_match() 函数
【问题讨论】:
-
不要使用正则表达式来解析 HTML - 使用 HTML 解析器。 stackoverflow.com/questions/1732348/…
-
我用它来替换 HTML 代码中的某些文本,所以 preg_match 对我来说没问题。我不需要 HTML 解析器
-
马克,我明白了。不要使用正则表达式解析 HTML。但是,如果用户不尝试解析 HTML,而是在 HTML 中搜索特定字符串怎么办?真的有必要使用 XML 解析器解析整个文档来完成这项工作吗?我觉得很多人都在用这个答案来回答正则表达式问题,而实际上它不是正确的答案。
-
@Mike,我完全同意,每个人似乎都在不假思索地重复“没有 HTML 的正则表达式”的言论。
-
@Paul:我不是“所有人”。我不是不假思索就这么说的。我这么说是因为我认为正则表达式是解决这个问题的糟糕方法。如果您认为使用正则表达式可以轻松完成,请展示如何操作。 :)
标签: regex lookbehind