11

我正在尝试在 Python 中拆分一个字符串,以便在某个正则表达式之前获得所有内容。

示例字符串:"Some.File.Num10.example.txt"

我需要这部分之前的所有内容:"Num10",正则表达式:(r'Num\d\d'数量会有所不同,可能会发生什么)。

关于如何做到这一点的任何想法?

4

3 回答 3

13
>>> import re
>>> s = "Some.File.Num10.example.txt"
>>> p = re.compile("Num\d{2}")
>>> match = p.search(s)
>>> s[:match.start()]
'Some.File.'

这将比进行拆分更有效,因为搜索不必扫描整个字符串。它在第一场比赛中中断。在您的示例中,由于字符串很短,因此不会有所不同,但是如果您的字符串很长并且您知道匹配将在开头,那么这种方法会更快。

我刚刚写了一个小程序来分析 search() 和 split() 并确认了上述断言。

于 2012-05-10T23:40:34.670 回答
10
>>> import re
>>> text = "Some.File.Num10.example.txt"
>>> re.split(r'Num\d{2}',text)[0]
'Some.File.'
于 2012-05-10T23:34:30.570 回答
5

你可以使用 Python 的re.split()

import re

my_str = "This is a string."

re.split("\W+", my_str)

['This', 'is', 'a', 'string', '']
于 2012-05-10T23:29:13.513 回答