python - 如何使用正则表达式仅匹配 URL 的域部分?

标签 python regex

我正在编写一个Python代码来处理一段文本,其中对我来说无用的文本中包含URL。在文本 block 之外,我只需要域,而不是完整的 URL。输入示例:

47.91.158.176 or 54.145.185.110 port 80 - gooolgeremf.top - GET /search.php
47.90.205.113 or 35.187.59.173 port 80 - voperforseanx.top/site/chrome_update.html

所以这里我只需要 gooolgeremf.topvoperforseanx.top 匹配,但我编写的正则表达式也将匹配 search.phpchrome_update.html

我的想法是正则表达式应该在 / 之后停止匹配。但是我不知道如何实现它,特别是如何不阻止整个文本文件中第一个 / 之后出现的匹配域。

到目前为止它在我的代码中的工作方式:

regexdm="[A-Za-z0-9]{1,}\.[A-Za-z0-9]{1,10}\.?[A-Za-z]{1,}\.?[A-Za-z]{1,}"
dmsc=re.findall(regexdm, iocsd.read())

最佳答案

我建议添加分隔符条件。假设域名可能仅由空格、行首/行尾以及域名之前的两个正斜杠和之后的一个斜杠包围,则正则表达式将为:

(?: |//|^)([A-Za-z0-9]{1,}\.[A-Za-z0-9]{1,10}\.?[A-Za-z]{1,}\.?[A-Za-z]{1,})(?: |/|$)

演示:https://regex101.com/r/TQKlDP/1

关于python - 如何使用正则表达式仅匹配 URL 的域部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43047504/

相关文章:

python - 解决输入文件数据的最大值和最小值问题

javascript - 如何在带括号的子字符串匹配上应用正则表达式?

regex - 构建一个正则表达式以在 href 中查找 id

java - 使用正则表达式选择 3 个字母的单词

python - 在 Python 中使用从字符串中删除\xa0

java - 实时验证 JTextField 的输入

Python - Pymongo 插入和更新文档

python - 如何将我的 keras 模型与运行时生成的我自己的数据相匹配

python - 如何在 Kivy 中动态更改标签背景颜色

python - 对于 Pandas 的 value_counts() 循环(嵌套)