我基本上想要匹配以下字符串:""," 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。我该怎么做?
答案 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")
答案 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