r'^a$'
用作完全匹配。
上述模式表示...字符串应以字母a
开头,并以字母a
结尾。
什么阻止了该模式(r'^a$'
)匹配字符串'anna'
?
答案 0 :(得分:3)
字符串应以字母
a
开头,并以字母a
结尾
这不是正则表达式唯一说的:它还要求字符串在首字母和最后一个字母之间没有其他字符,这意味着此表达式匹配的唯一字符串是单字符字符串a
要解决此问题,请添加.*?
以匹配字符串的“中间”:
^a.*?a$
请注意,此表达式不再与单字符字符串a
匹配,因此至少需要两个a
。
答案 1 :(得分:1)
您的解释不正确。
正则表达式从左到右进行处理,匹配输入的一部分。
^a$
表示匹配从字符串的开头开始,然后必须立即与a
匹配,然后必须立即与字符串的末尾匹配。
与
没有什么不同abc
表示b
必须立即跟随a
,而c
必须立即跟随b
。
答案 2 :(得分:0)
您误解了正则表达式的含义。
r'^a$'
表示一个以字母“ a”开头并以相同的字母“ a”结尾的字符串。表达式中的“ a”字符必须同时是字符串中的开始和结束字符。
要提取以不同a开头和结尾的字符串,可以使用r^a.*a$
。但这要求两个a不能相同。要获取以“ a”开头和以“ a”结尾的任何字符串,您可以将这两个或在一起:
r'^a$|^a.*a$'