Python正则表达式以字开头分割

时间:2012-02-04 16:58:50

标签: python regex

我知道如何搜索单词并按字母分割字符串。例如:

s = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'
r = re.compile('(elit)')  
r.split(s)
# => ['Lorem ipsum dolor sit amet, consectetur adipisicing ', 'elit', ', sed do eiusmod tempor incididunt ut labore et dolore magna aliqua']

我怎么能这样做,但只知道单词的开头?例如,我想将字符串拆分为“consect *”并将其拆分为“consectetur”的匹配。感谢

3 个答案:

答案 0 :(得分:3)

使用\w匹配任何单词字符,如果只需要ASCII字母字符,请使用[A-Za-z]

r = re.compile('(consect\w*)')

答案 1 :(得分:1)

只需使用(consect\w*)作为正则表达式:

In [3]: import re

In [4]: s = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'

In [5]: r = re.compile(r'(consect\w*)')  

In [6]: r.split(s)
Out[6]: 
['Lorem ipsum dolor sit amet, ',
 'consectetur',
 ' adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua']

\w*匹配任何字母数字字符序列。如果您的要求不同,可以用不同的字符类替换\w

有关Python正则表达式的更多详细信息,请参阅Regular Expression Syntax

答案 2 :(得分:1)

使用\w:字母数字字符加“_”[A-Za-z0-9 _]

r = re.compile('(consect\w*)')

或使用\S:非空白字符[^ \ t \ r \ n \ n \ v \ f]

r = re.compile('(consect\S*)')