我有一句话。我想找到所有出现在该句子中以特定字符开头的单词。我是编程和Python的新手,但从我知道的一点点来看,这听起来像是一个正则表达式的问题。
什么是模式匹配代码,让我找到符合我模式的所有单词?
非常感谢,
布洛克
答案 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