Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单Python正则表达式查找模式_Python_Regex - Fatal编程技术网

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

简单Python正则表达式查找模式,python,regex,Python,Regex,我有一句话。我想找出一个单词在句子中出现的所有以特定字符开头的地方。我对编程和Python非常陌生,但据我所知,这听起来像是一个正则表达式问题 什么是模式匹配代码,可以让我找到与我的模式匹配的所有单词 多谢各位 布罗克 阅读: 在空格上拆分句子,使用循环搜索模式并打印出来。我支持深入Python的建议。但基本上是: m = re.findall(r'\bf.*?\b', 'a fast and friendly dog') print(m) \b表示单词边界,和。*?确保我们存储整个单词,但为

我有一句话。我想找出一个单词在句子中出现的所有以特定字符开头的地方。我对编程和Python非常陌生,但据我所知,这听起来像是一个正则表达式问题

什么是模式匹配代码,可以让我找到与我的模式匹配的所有单词

多谢各位

布罗克

阅读:


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

我支持深入Python的建议。但基本上是:

m = re.findall(r'\bf.*?\b', 'a fast and friendly dog')
print(m)
\b表示单词边界,和。*?确保我们存储整个单词,但为了避免走得太远而后退(从技术上讲,被称为懒惰运算符)。

您可以这样做(但不使用
re
):

正则表达式也可以工作(请参阅其他答案),但我认为这个解决方案会更具可读性,而且作为Python的初学者,您会发现列表理解(如上面的解决方案)对于获得舒适度非常重要

import re
print re.findall(r'\bv\w+', thesentence)
例如,将打印以
'v'
开头的句子中的每个单词


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

为什么要替换,以及字符串结尾锚定?这似乎是一个很好的方法,因为我想避免直接在单词后面加逗号。我的问题是,如果我想让这个词以@符号开头,我就无法实现这一点。思想?感谢添加一个
@?
——在正则表达式的开头,在
\b
之前,可选出现
'@'
(您实际上可以忽略该
\b
,因为
@
那么
v
将始终表示单词边界,无需检查;-)。这对我来说非常适合。你能想出一种方法来检查结尾字符吗?。在我的例子中,字符串以数字结尾。
m = re.findall(r'\bf.*?\b', 'a fast and friendly dog')
print(m)
matching_words = [x for x in sentence.split() if x.startswith(CHAR_TO_FIND)]
import re
print re.findall(r'\bv\w+', thesentence)