0

我需要一些有关 Python 中正则表达式的帮助。我有字符串,例如:

17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;127.0.0.1 2013-10-19
17:22:32;http://example2.com;example2.com;127.0.0.1 2013-10-19 
20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com;127.0.0.1 2013-10-19

我怎样才能得到这个清单?

['http://example1.com/viewtopic.php?f=8&t=189', 'http://example2.com', 'http://example3.com/threads/example-text-in-url.27304/']
4

3 回答 3

3

您在这里不需要正则表达式,使用csv解析器。

假设您的数据位于名为的文件中data.csv

import csv
reader = csv.reader(open("data.csv"), delimiter=";")
referers = [line[1] for line in reader]
于 2013-10-19T18:31:04.370 回答
1

试试这个。也许它适合您的需求:)

正则表达式

/^(.*;)/gm

细绳

17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;127.0.0.1 2013-10-19
17:22:32;http://example2.com;example2.com;127.0.0.1 2013-10-19 
20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com;127.0.0.1 2013-10-19

火柴

1.  [0-66]    `17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;`
2.  [87-129]  `17:22:32;http://example2.com;example2.com;`
3.  [151-228] `20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com
于 2013-10-19T18:34:43.090 回答
1

我将提供一个正则表达式解决方案,因为这是您所要求的。基本上,您需要做的就是捕获 和 之间的http://文本;。下面是一个演示:

from re import findall

mystr = """
17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;127.0.0.1 2013-10-19
17:22:32;http://example2.com;example2.com;127.0.0.1 2013-10-19 
20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com;127.0.0.1  2013-10-19
"""

print findall("(http://.+?);", mystr)

输出:

['http://example1.com/viewtopic.php?f=8&t=189', 'http://example2.com', 'http://example3.com/threads/example-text-in-url.27304/']
于 2013-10-19T18:41:00.317 回答