【发布时间】: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