regex - 一个正则表达式,它在文本中检测符号“(引号),避免在标签 <> 中使用它
问题描述
我需要一个正则表达式来检测位于文本中的符号“(引号),但如果它位于标签内(例如<a href="https://bla-bla">
),它应该没问题。
换句话说,正则表达式应该在文本中找到引号(“),但如果它在标签内<>
,它应该避免它。我有一个正则表达式可以检测标签内的引号,<[a-zA-Z\s]+="[\w:\/\.]+">
但我无法想出一个正则表达式来检测文本中的引号避免如果它位于标签内。
我将不胜感激任何帮助或想法...谢谢。
解决方案
嗯...这就是我所做的。这是 1.5 年的工作 ola。这个 reg-ex 已经测试了将近一年(我正在使用)。它可以工作......基本上......注意:有一种情况并不是真正的错误,但值得商榷......它不会匹配这样措辞的属性:<A HREF = "http://url.com/dir..">
等于和之间有空格属性值。注意 WHITESPACE-EQUALS-WHITESPACE 模式......它很容易修改,但不是正确的 HTML。
我希望这能回答您提出的问题,如果没有,请发表评论。我认为您是在询问从 HTML 标记中检索属性的问题。正确的?您的 reg-ex 准确地看着我长时间盯着的东西...... :)
以下是检索 HTML 属性值的方法:
public static final Pattern P3 = Pattern.compile( "(" +
"[\\w-]+=\"[^\"]*?\"" + "|" +
"[\\w-]+='[^']*?'" + "|" +
"[\\w-]+=[\\w-]*" + "|" +
"[\\w-]+" + "|" +
"\\s+" + "|" +
"[^>]+" + ")",
Pattern.DOTALL );
这是 HTML 匹配器正则表达式...(不是回答您问题的一部分,我希望您不介意!)
public static final Pattern P1 = Pattern.compile
("<\\/?(\\w+)" +
"(?:" + "[\\w-]+=\"[^\"]*?\"" + "|" // attribute="any valid string, without (the same) quote"
+ "[\\w-]+='[^']*?'" + "|" // attribute='any valid string without (the same) quote'
+ "[\\w-]+=[\\w-]*" + "|" // attribute=any-valid-string-no-spaces-or-punctuation-etc
+ "[\\w-]+" + "|" // attribute
+ "\\s+" + "|" // any white-space
+ "[^>]+" + ")*" // Any miscellaneous characters ("Junk?"), *EXCEPT* a "greater-than"
// (MUST be THE LAST or-option)
// NOTE: The above "|" (or-branch), *MUST* be at the end... or else
// It will match everything, (except '>'), and miss the whole point.
// (Specifically, the first three attribute-value pair clauses are
// how to avoid the greater-than-within-tag problem!!!
+ "\\/?>", // Ending-HTML-Tag symbol is a "greater-than" or "slash-greater-than"
Pattern.DOTALL );
推荐阅读
- java - Java 包名称验证
- python-3.x - 循环通过拆分的数据框,并使用 Pandas 将它们中的每一个写入不同的 excel 表中
- reactjs - 将初始值绑定到材质 ui 选择
- r - 在选择函数中将不带引号的参数作为字符传递
- jmeter - 尝试登录时 jmeter 中的 SmackException$NoResponseException
- python - 如何在 OpenCV 中从 Alpha 通道创建遮罩?
- apache-kafka - 如何使用 nodejs 或 java 在 Kafka 流生产者中创建大消息块(1MB 以上)?
- ios - 如何使用 iOS 13 在 iPhone 上启动场景的多个实例?
- java - 使用 mockito 更改 Final 字段
- php - 当 $_SERVER['QUERY_STRING'] 包含 'a=foo' 时,为什么不会填充 $_GET['a']?