【问题标题】:Regexp pattern to stop at &lt;正则表达式模式停止在 <
【发布时间】:2014-10-29 07:34:11
【问题描述】:

我有一些这样的字符串

String text = "&gt;www.stackoverflow.com&lt;something else"

现在我正在寻找一个正则表达式模式来仅捕获 www.stackoverflow.com,但请记住 URL 可以包含与符号。该模式需要与&amp;lt; 子字符串完全匹配。

到目前为止,我有这个正则表达式:

(www.)([-a-zA-Z0-9@:%_\\+,.~#?!&\\/=äöü]+(?![&lt]).)

但是,当然,它不起作用。

【问题讨论】:

    标签: java html regex


    【解决方案1】:

    您需要使用积极的前瞻:

    (www\\.)([-a-zA-Z0-9@:%_\\+,.~#?!&\\/=äöü]+)(?=&lt;)
    

    RegEx Demo

    【讨论】:

    • 谢谢,这对我的示例很有用,但是如果 URL 和 &amp;lt; 之间有空格怎么办?说:&amp;gt;www.stackoverflow.com &amp;lt;something else
    • 好的,那么你可以使用:(www\\.)([-a-zA-Z0-9@:%_\\+,.~#?!&amp;\\/=äöü]+)(?=\\s*&amp;lt;)regex
    • 很抱歉再次询问,但实际上我无法弄清楚。如果根本没有&amp;lt;,我该怎么办?
    • 哦,但这完全改变了问题。我想你需要明确定义何时停止匹配。
    【解决方案2】:
    .*?(www.*?)&lt.*
    

    这将起作用。请参阅演示。

    http://regex101.com/r/oO8zI4/4

    【讨论】:

      【解决方案3】:

      你必须使用正则表达式吗?

      text.substring(text.indexOf("www"), text.indexOf("&lt")) 
      

      完成工作。

      【讨论】:

      • 如果您的 jdk 版本 ,请小心使用 substring()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多