0

假设我想匹配一个正则表达式以在文本中查找域地址。(包括子域,如果有的话)例如:它应该匹配

abc.xyz. 
google.
yahoo.
mail.google.

片段:

pattern = '((\s*\w+.\s*)+)'
matches = re.findall(pattern,line)
for m in matches:
 .. 
 ..

内括号将给出我不需要的 m[0],我只需要 m[1]。什么是内括号的替换,以便我在 m[0] 中得到我的结果。

PS:有额外的匹配组 () 令人困惑,我想避免使用它们,除非我需要那些特定的值。

4

1 回答 1

4

?:您可以通过在开头放置一组非捕获:

((?:\s*\w+.\s*)+)

顺便说一句,外括号m[1]和内括号是m[2]- 编号通过计算左括号来工作,从 1 开始。m[0]指的是整个正则表达式。在您的情况下,这与m[1]因为您将整个事物都放在一个组中(为什么?)是一样的。

于 2013-11-03T23:18:58.607 回答