【问题标题】:Regex NOT Operation正则表达式 NOT 操作
【发布时间】:2013-10-07 05:02:03
【问题描述】:

我有一个条件,我必须选择不属于 span 标签的任何内容。

输入 -

the <span class='ptc-highlightedSearchResult'>PISTON</span> has their <span class='ptc-highlightedSearchResult'>ROD</span> ring

选择&lt;span&gt;标签及其内容的正则表达式 -

(<span[^>]+class\s*=\s*("|')ptc-highlightedSearchResult\2[^>]*>)[^<]*(</span>)

我可以选择跨度及其内容中的任何内容,但不能选择其他内容。任何关于 NOT 操作的帮助将不胜感激。

【问题讨论】:

  • 为什么不使用已经处理 XML 或 HTML 的库呢?正则表达式不是最适合这样的标记,你可以在整个 SO 中找到。
  • @BLaZuRE - 我不能使用它们,我对编辑有一些限制,只能使用正则表达式。请传递您的建议。
  • 我假设docs.oracle.com/javase/1.4.2/docs/api/javax/xml/parsers/… 不会帮助你?试试这个关于 not 运算符的更多信息:stackoverflow.com/questions/7317043/regex-not-operator
  • @Devendraw 您可以在替换中使用此正则表达式来删除所有跨度,您将离开外面的东西。
  • @Jerry - 抱歉,我也无法删除 span 和 span 的内容。我只想选择剩余的文本并希望在用户输入他的输入时突出显示它们。所以 标签将继续添加到页面上。请建议正则表达式避免它们及其内容并选择其他字符串部分。

标签: java html regex regex-negation


【解决方案1】:

你可以用这个:

((?:(?![^<>]*(?:>))[^<](?![^<>]*</))+)

regex101 demo

它将匹配不在开始标签和结束标签之间或之间的任何文本。演示中对正则表达式进行了细分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2016-01-06
    • 1970-01-01
    • 2011-09-16
    • 2018-05-07
    • 2011-04-06
    • 2014-09-30
    相关资源
    最近更新 更多