我正在编写一个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.top
和 voperforseanx.top
匹配,但我编写的正则表达式也将匹配 search.php
和chrome_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,})(?: |/|$)
关于python - 如何使用正则表达式仅匹配 URL 的域部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43047504/