我的正则表达式在python中没有完全匹配
这是我的密码我的正则表达式在python中没有完全匹配,python,regex,python-3.x,Python,Regex,Python 3.x,这是我的密码 import re l=["chap","chap11","chapa","chapb","chapc","chap3","chap2","chapf","chap4","chap55","chapf","chap33","chap54","chapgk"] for i in l: matchobj=re.match(r'chap[0-9]',i,re.M|re.I) if matchobj: print(i) 正如我提到的第[0-9]章。。因此
import re
l=["chap","chap11","chapa","chapb","chapc","chap3","chap2","chapf","chap4","chap55","chapf","chap33","chap54","chapgk"]
for i in l:
matchobj=re.match(r'chap[0-9]',i,re.M|re.I)
if matchobj:
print(i)
正如我提到的第[0-9]章。。因此,它应该只包含那些在chap之后只跟在一个整数后面的字符串
所以我应该得到以下输出
第三章
第二章
第四章
但我得到以下输出。。。
第十一章
第三章
第二章
第四章
第五十五章
第三十三章
第54章与字符串开头的模式匹配。例如,将字符串'$'
的结尾或单词边界'\b'
附加到您的模式中:
matchobj=re.match(r'chap\d$',i,re.M|re.I)
# \d (digit) is shortcut for [0-9]
从上的re.match
:
如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例
匹配字符串开头的模式。例如,将字符串'$'
的结尾或单词边界'\b'
附加到您的模式中:
matchobj=re.match(r'chap\d$',i,re.M|re.I)
# \d (digit) is shortcut for [0-9]
从上的re.match
:
如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例
您应该在正则表达式的末尾添加一个美元符号。美元($)表示字符串的结尾,为了便于将来参考,克拉(^)表示开始
import re
l=["chap","chap11","chapa","chapb","chapc","chap3","chap2","chapf","chap4","chap55","chapf","chap33","chap54","chapgk"]
for i in l:
matchobj=re.match(r'chap[0-9]$',i,re.M|re.I)
if matchobj:
print(i)
输出
chap3
chap2
chap4
您应该在正则表达式的末尾添加一个美元符号。美元($)表示字符串的结尾,为了便于将来参考,克拉(^)表示开始
import re
l=["chap","chap11","chapa","chapb","chapc","chap3","chap2","chapf","chap4","chap55","chapf","chap33","chap54","chapgk"]
for i in l:
matchobj=re.match(r'chap[0-9]$',i,re.M|re.I)
if matchobj:
print(i)
输出
chap3
chap2
chap4
添加一个单词边界
chap[0-9]\b
添加一个单词边界chap[0-9]\b
您可以使用\d
@Niitaku简化数字范围,因为它缩短了模式并且通常没有语义差异。但是,\d
可以匹配比[0-9]更多的字符。
您可以通过使用\d
@Niitaku来简化数字范围。我添加了这一点,因为它缩短了模式并且通常没有语义差异。但是,\d
可以匹配比[0-9]
更多的字符,但是它应该在chap之后只匹配1个整数…为什么不匹配?但是它应该在chap之后只匹配1个整数…为什么不匹配?