Python正则表达式:在以某个单词开头的地方进行分割

3

我知道如何搜索单词并在字符串中分割它。例如:

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]* - Felix Kling
为了澄清以下答案,string.split会在每个给定字符串的出现处拆分字符串。re.split会在每个给定正则表达式的匹配处拆分字符串。 - Katriel
3个回答

3
使用\w匹配任何单词字符,或者使用[A-Za-z]仅匹配ASCII字母字符。
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 正则表达式的更多详细信息,请参见 正则表达式语法


1

使用\w:字母数字字符加下划线[A-Za-z0-9_]

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接