string在python中使用正则表达式匹配模式

时间:2016-02-09 15:49:52

标签: python regex

我正在使用以下代码来检查字符串是否使用正则表达式匹配模式。因为ptr2不应与模式匹配,但结果具有匹配项。有什么问题?

ptr1="ptreee765885"
ptr2="hdjfhdjh@@@@"
str1=re.compile(r'[a-zA-Z0-9]+')

result=str1.match(ptr1)
result1=str1.match(ptr2)

if str1.match(ptr2):
print (" string matches %s",ptr2)
else:
print (" string not matches pattern %s",ptr2)

2 个答案:

答案 0 :(得分:1)

您需要添加$以匹配字符串的结尾:

parent.Right = attachPoint;

如果您需要匹配整个字符串,您还应该在开头包含^字符以匹配字符串的开头:

str1=re.compile(r'[a-zA-Z0-9]+$')

只有在整个字符串与该选择匹配时才会匹配。

答案 1 :(得分:0)

Python re.match与C ++ std :: regex或Java regex_match方法中的String#matches不同,它只在 start 中搜索匹配项字符串。

  

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例。

因此,要与ptr2匹配失败,正则表达式应该只在最后使用$(或\Z)锚点{{1 }}

请参阅IDEONE demo

re.match

如果您打算使用 re.search,则需要import re ptr2="hdjfhdjh@@@@" str1=re.compile(r'[a-zA-Z0-9]+$') if str1.match(ptr2): print (" string matches %s",ptr2) else: print (" string not matches pattern %s",ptr2) # => (' string not matches pattern %s', 'hdjfhdjh@@@@') ^个锚点才能要求完整字符串匹配

$

Another demo