【问题标题】:Why can't I match a simple domain name with a Python regex? [duplicate]为什么我不能用 Python 正则表达式匹配一个简单的域名? [复制]
【发布时间】:2015-09-15 23:55:27
【问题描述】:

我正在使用 Python 在域上执行非常简单的正则表达式。我不明白为什么下面的第 5 行没有返回匹配项 - 我做错了什么?

In [1]: import re

In [2]: a = re.compile("example\.com", re.IGNORECASE)

In [3]: a.match("example.com")
Out[3]: <_sre.SRE_Match at 0x10b3a3b90>

In [4]: a.match("example.com/dlkfdsf")
Out[4]: <_sre.SRE_Match at 0x10b3a36b0>

In [5]: a.match("http://www.example.com/sdklfjsdf")
# No match

【问题讨论】:

  • 因为 match 试图从字符串的开头进行匹配。将您的正则表达式更改为 r'.*example\.com' 或使用 re.search

标签: python regex


【解决方案1】:

正如 Avinash Raj 在 cmets 中所建议的,匹配匹配全文。

试试这个:

import re

a = re.compile("(example\.com)", re.IGNORECASE)

a.search("http://www.example.com/sdklfjsdf").groups(1)
('example.com',)

【讨论】:

    【解决方案2】:

    我应该一直在使用re.search()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多