首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python使用regex匹配字符串

Python使用regex匹配字符串
EN

Stack Overflow用户
提问于 2013-10-10 23:28:11
回答 4查看 166.8K关注 0票数 44

我需要一个python正则表达式来检查字符串中是否存在单词。字符串可能会用逗号分隔。

举个例子,

line = 'This,is,a,sample,string'

我想搜索基于“样本”,这将返回真。我不擅长使用reg ex,所以当我查看python文档时,我看到了类似这样的东西

import re
re.match(r'sample', line)

但我不知道为什么要匹配的文本前有一个'r‘。有没有人能帮我写正则表达式?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-10 23:32:58

您确定需要一个正则表达式吗?看起来你只需要知道一个单词是否出现在字符串中,所以你可以这样做:

>>> line = 'This,is,a,sample,string'
>>> "sample" in line
 True
票数 73
EN

Stack Overflow用户

发布于 2013-10-10 23:32:04

R代表一个原始字符串,所以像\这样的东西将被Python自动转义。

通常,如果您希望您的模式包含诸如反斜杠之类的内容,则需要使用另一个反斜杠对其进行转义。原始字符串消除了这个问题。

short explanation

在你的情况下,这并不重要,但这是一个好习惯,否则\b之类的东西会在你背后咬你,如果你不小心的话(会被解释为退格字符,而不是单词边界)

根据re.match与re.search的对比,这里有一个例子将为您阐明这一点:

>>> import re
>>> testString = 'hello world'
>>> re.match('hello', testString)
<_sre.SRE_Match object at 0x015920C8>
>>> re.search('hello', testString)
<_sre.SRE_Match object at 0x02405560>
>>> re.match('world', testString)
>>> re.search('world', testString)
<_sre.SRE_Match object at 0x015920C8>

因此,搜索将在任何位置找到匹配,匹配将仅从开头开始

票数 9
EN

Stack Overflow用户

发布于 2013-10-16 01:09:50

正如其他每个人都提到的,最好使用"in“运算符,它也可以作用于列表:

line = "This,is,a,sample,string"
lst = ['This', 'sample']
for i in lst:
     i in line

>> True
>> True
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19300020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档