【问题标题】:Remove url from a text with regex使用正则表达式从文本中删除 url
【发布时间】:2018-04-23 15:35:18
【问题描述】:

我需要一个匹配已知网址的正则表达式,例如 www.example.com https://www.example.com 而不是 example.example,所以我需要一个正则表达式来修复 com|fr|org 域名。

我试过这个:

String txt = "blabla https://www.pris.com https://pris.com www.Iris.fr iris.com no.po";

        txt = txt.replaceAll("^*[a-zA-Z0-9\\-\\.]+\\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$","");// delete www or http or https starting
        txt = txt.replaceAll("((http|https)://)?[a-zA-Z]\\w*(\\.\\w+)+(/\\w*(\\.\\w+)*)*(\\?.+)*","");

【问题讨论】:

  • 你试过这个并且......?
  • 我试了第二个就成功了
  • 我不想删除 no.po 也许我们可以拥有 something.something 但它不是 url
  • 那么您希望它删除哪些,哪些可以?
  • @GBlodgett 我需要删除 pris.com pris.com www.Iris.fr iris.com 以及 pris.com/test/test 或任何带有 / 的 url 的情况

标签: java regex


【解决方案1】:

试试这个正则表达式

(?i)\b(?!mailto:)(?:(?:https?|ftp)://)?(?:\S+(?::\S*)?@)?(?:(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?-i:com|org|net|mil|edu|fr|COM|ORG|NET|MIL|EDU|FR))))\b(?:/[^/\s]*)*/?

在这里试试https://www.regexplanet.com/share/index.html?share=yyyyy72am6r

可读版本

 (?i)
 \b 
 (?! mailto: )
 (?:
      (?: https? | ftp )
      ://
 )?
 (?:
      \S+ 
      (?: : \S* )?
      @
 )?
 (?:
      (?:
           (?: [1-9] \d? | 1 \d\d | 2 [01] \d | 22 [0-3] )
           (?:
                \.
                (?: 1? \d{1,2} | 2 [0-4] \d | 25 [0-5] )
           ){2}
           (?:
                \.
                (?: [1-9] \d? | 1 \d\d | 2 [0-4] \d | 25 [0-4] )
           )
        |  (?:
                (?: [a-z\u00a1-\uffff0-9]+ -? )*
                [a-z\u00a1-\uffff0-9]+ 
           )
           (?:
                \.
                (?: [a-z\u00a1-\uffff0-9]+ -? )*
                [a-z\u00a1-\uffff0-9]+ 
           )*
           (?:
                \.
                (?-i: com | org | net | mil | edu | fr | COM | ORG | NET | MIL | EDU | FR )
           )
      )
 )
 \b 
 (?: / [^/\s]* )*
 /?

【讨论】:

  • 做得好,但在你的正则表达式中,它与 www.Iris.fr 的大小写和某事/某事的大小写不匹配
  • @Dr.Mza - 更新了正则表达式。请注意,您可以在开头使用 (?<!\S) 并在结尾使用 (?!\S) 将单词边界更改为空白边界。这样做可能会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
相关资源
最近更新 更多