我正在使用以下代码来检查字符串是否使用正则表达式匹配模式。因为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)
答案 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@@@@')
和^
个锚点才能要求完整字符串匹配 :
$