比较字符串与正则表达式

时间:2018-05-04 14:51:25

标签: regex python-3.x

我基本上想要匹配以下字符串:""," some,thing"," some,one,thing",但我想不匹配表达式如:',thing',' _thing,' ,' some_thing'。

我想要匹配的模式是:以字母开头的字符串,正文的其余部分可以是逗号,空格或字母。

这就是我的所作所为:

import re
x=re.compile('^[a-zA-z][a-zA-z, ]*') #there's space in the 2nd expression here
stri='some_thing'
x.match(str)

它给了我:

<_sre.SRE_Match object; span=(0, 4), match='some'>

问题是,我的正则表达式在某种程度上有效,但它实际上提取了匹配的字符串部分,但我想将整个字符串与正则表达式模式进行比较,如果它与模式不匹配则返回False。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您使用与more thank you think匹配的[a-Z]

如果要匹配[a-zA-Z],可以使用不区分大小写的标记:

import re
x=re.compile('^[a-z][a-z, ]*$', re.IGNORECASE)
stri='some,thing'

if x.match(stri):
    print ("Match")
else:
    print ("No match")

Test

答案 1 :(得分:1)

最简单的方法是将结果与原始字符串进行比较。

import re
x=re.compile('^[a-zA-z][a-zA-z, ]*')
str='some_thing'
x.match(str).group(0) == str #-> False

str = 'some thing'
x.match(str).group(0) == str #-> True