2012-02-04 67 views
3

我知道如何搜索一個單詞並通過它拆分字符串。例如:Python的正則表達式來分裂開始於

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」的匹配處將其拆分。謝謝

+1

這取決於什麼是你的「單詞」。你可以匹配下一個空格:'consect [^ \ s] *' – 2012-02-04 17:02:22

+0

爲了澄清下面的答案,'string.split'會在給定字符串的每次出現時分割一個字符串。 're.split'會在給定正則表達式的每次匹配時分割一個字符串。 – katrielalex 2012-02-04 17:10:07

回答

3

使用\w匹配任何單詞字符,或[A-Za-z]如果您只想要ASCII alpabetic字符。

r = re.compile('(consect\w*)') 
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

1

使用\w:字母數字字符加上 「_」[A-ZA-Z0-9_]

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

,或者使用\S:非空白字符[^ \噸\ r \ n符\ v \ F]

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