捕捉N个字母然后是2或3个数字

2024-09-25 02:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我要编写一个正则表达式,它捕获一个字符串:“N个字母后跟2或3个数字”,其中N作为函数的参数传递。你知道吗

我所做的是:"[a-zA-Z]{" + "{number}".format(number=N) + "}[0,9]{2,3}"但这是不对的。哪里出错了?你知道吗

对于N=3,它应该匹配:"abc12", "abc123",而不是"a1", "abc1", "abc1234"。你知道吗


Tags: 函数字符串formatnumbera1字母数字abc123
2条回答

第二个块仅捕获数字09,请将其更改为一个范围:

"[a-zA-Z]{%d}[0-9]{2,3}"%N 

编辑: 要捕获不匹配的内容,您需要在regex中添加开始和结束条件。这可以通过以下几种方式实现:

文本锚定

起点和终点线指定如果您的图案要单独在一条线上:

"^[a-zA-Z]{%d}[0-9]{2,3}$"%N

其中^表示行的开始,$表示行的结束

指定匹配

您可以说在模式后匹配特定字符:

"[a-zA-Z]{%d}[0-9]{2,3}[^0-9]+"

括号内的^会说“与这些字符不匹配”。我对lookaheads/lookbacks不够熟悉,无法用它们给您一个很好的答案,但是可以找到文档here

您需要为表达式添加锚定:

^[a-z]{3}\d{2,3}$

a demo on regex101.com


一般来说:
^[a-z]{n}\d{2,3}$
#     ^^^

相关问题 更多 >