【问题标题】:Extract text without extracting urls using regex?提取文本而不使用正则表达式提取网址?
【发布时间】:2018-05-14 21:13:13
【问题描述】:

我从论坛帖子中提取了大量文本,现在正在对其进行过滤。我正在使用具有以下模式的正则表达式:

pattern = [A-Za-zćžđščČĆŽĐŠ0-9'\-]+|[\.]+|[\?]+|[\!]+|[\,\@\%\#\*\(\)\:]

我得到这样的结果:

'internetske', 'komunikacije', ',', 'te', 'njega', 'neovlašteno', 'isključili', '.', 'Uz', 'to', 'izvješće', 'Živkovića', '-', 'a', 'i'

但是,我在此文本中也有 url,它们也被拆分为单词。 我想要没有 url 的文本。 我尝试了以下方法,但它只与 http 开头的 h 不匹配:

pattern = (?!https?://)[A-Za-zćžđščČĆŽĐŠ0-9'\-]+|[\.]+|[\?]+|[\!]+|[\,\@\%\#\*\(\)\:]

我觉得这需要一个简单的调整,但我正在慢慢发疯,试图弄清楚如何在匹配其余部分的同时使异常不匹配 url。您可以假设 url 周围有空格。

【问题讨论】:

  • 我真的不知道如何在正则表达式中创建例外,但由于大多数 URL 以“.something”结尾,您可以通过排除从 http:// 或 https 开始的所有内容来做到这一点:// 然后以“最后一个点+一些字母”结尾;这只是一个建议,但希望这可以帮助你一点
  • 您希望将 URL 提取为单个单词吗?我认为您应该在正则表达式中为此创建一个单独的案例。
  • 试试https?:\S+|[A-Za-zćžđščČĆŽĐŠ0-9'-]+|\.+|\?+|!+|[,@%#*():]
  • 我想我不清楚。我想要无 url 的文本。

标签: regex


【解决方案1】:

您希望将 URL 提取为一个单词吗? 我认为您应该在正则表达式中为此创建一个单独的案例。

类似这样的:

(https?:\/\/\w+.\w+(?:\/[\w|\\-|#]+)|[A-Za-zćžđščČĆŽĐŠ0-9'\-]+|[\.]+|[\?]+|[\!]+|[\,\@\%\#\*\(\)\:])

https://regex101.com/r/3jWDeT/1/

【讨论】:

  • 对不起,我的措辞很糟糕。我希望我的最终文本中没有网址。我想提取单词和其他语言字符,根本不提取 url。
猜你喜欢
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多