Python正则表达式:检测包含特定单词的模式?

2024-04-20 08:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

句子:"[cnn news, Chris] Stackoverflow is awesome"

我想用正则表达式检测的是[cnn news, Chris]部分

我尝试的:re.search(r"[cnn news, \w+]", sentence)但它只检测到c(第一个字母)

我的表情怎么了


Tags: researchis字母stackoverflowcnnsentence表情
3条回答

因此Regex101是构建和调试正则表达式的极好工具

在本例中,您可能希望使用捕获组来获取字符串开头方括号内的文本。我能想到的最好办法是这样:^\[(.*)\]

Regex101对此的解释比我在以下链接中所能做的更好:https://regex101.com/r/LfrbL2/1/

这个正则表达式基本上在输入文本的开始处寻找[,然后捕获该[之后的所有内容,直到找到]

听起来除了搜索外,还想提取括号内的内容。我们可以对捕获组使用模式\[([^\]]+)\]

sentence = "[cnn news, Chris] Stackoverflow is awesome"
result = re.search("\[([^\]]+)\]", sentence)

if result:
    print "Found a match: ", result.group(1)

Demo

您正在尝试在character class中使用您的模式^{},它将只匹配几个字符中的一个

如果要匹配[cnn news, Chris],则必须将\[转义为开头的方括号:

^{}

Demo

为了匹配方括号内的模式[]cnn news,开始,您可以使用一个正向的lookback (?<=来断言左边的是[

然后匹配您的模式cnn news, \w+,并在最后使用正向前瞻(?=\])来断言右边的是]

^{}

import re
sentence = "[cnn news, Chris] Stackoverflow is awesome";
result = re.search(r"(?<=\[)cnn news, \w+(?=\])", sentence)

if result:
    print result.group()

这将给你:

cnn news, Chris

Demo

相关问题 更多 >