简单的Python正则表达式查找模式

时间:2010-02-14 04:08:53

标签: python regex

我有一句话。我想找到所有出现在该句子中以特定字符开头的单词。我是编程和Python的新手,但从我知道的一点点来看,这听起来像是一个正则表达式的问题。

什么是模式匹配代码,让我找到符合我模式的所有单词?

非常感谢,

布洛克

5 个答案:

答案 0 :(得分:17)

import re
print re.findall(r'\bv\w+', thesentence)
例如,

将打印以'v'开头的句子中的每个单词。

使用split字符串方法,如另一个答案所示,不会识别,而是可能包含标点符号的空格分隔字块。这个基于re的解决方案 识别单词(字母和数字,标点符号)。

答案 1 :(得分:3)

我的Dive Into Python推荐。但它基本上是:

m = re.findall(r'\bf.*?\b', 'a fast and friendly dog')
print(m)

\ b表示单词边界,和。*?确保我们存储整个单词,但后退以避免走得太远(从技术上讲,?被称为懒惰运算符)。

答案 2 :(得分:2)

>>> sentence="a quick brown fox for you"
>>> pattern="fo"
>>> for word in sentence.split():
...     if word.startswith(pattern):
...         print word
...
fox
for

将句子拆分为空格,使用循环搜索模式并将其打印出来。

答案 3 :(得分:2)

你可以这样做(虽然不使用re):

matching_words = [x for x in sentence.split() if x.startswith(CHAR_TO_FIND)]

正则表达式也起作用(参见其他答案),但我认为这个解决方案会更具可读性,作为初学者学习Python,你会发现列表理解(如上面的解决方案)对于获得舒适程度很重要用。

答案 4 :(得分:1)

import re

s = "Your sentence that contains the word ROAD"
s = re.sub(r'\bROAD', 'RD.', s)

print s

阅读:http://diveintopython3.org/regular-expressions.html