python - 捕获 N 个字母,然后捕获 2 或 3 个数字
问题描述
我要编写一个捕获字符串的正则表达式:“N 个字母后跟 2 或 3 位数字”,其中 N 作为函数的参数传递。
我所做的是:"[a-zA-Z]{" + "{number}".format(number=N) + "}[0,9]{2,3}"
但这是不对的。哪里错了?
对于N=3
,它应该匹配:"abc12", "abc123"
但不是"a1", "abc1", "abc1234"
。
解决方案
您的第二个块仅捕获数字0
,9
并将其更改为一个范围:
"[a-zA-Z]{%d}[0-9]{2,3}"%N
编辑:为了不捕获不匹配的内容,您需要在正则表达式中添加开始和结束条件。这可以通过以下几种方式完成:
文本锚点
如果您的图案要单独在一条线上,则开始和结束线指定:
"^[a-zA-Z]{%d}[0-9]{2,3}$"%N
where^
代表行首和$
行尾
指定不匹配
您可以说不匹配模式后的特定字符:
"[a-zA-Z]{%d}[0-9]{2,3}[^0-9]+"
括号内^
会显示“不匹配这些字符”。我对前瞻/回顾不够熟悉,无法使用它们给你一个很好的答案,但可以在此处找到文档
推荐阅读
- android - 我已经尝试了所有方法,但我的设备在 adb(Mac) 中仍然是未经授权的
- firebase - Firebase 模拟器返回空数据,而在部署后工作正常
- css - 如何将自定义 CSS 属性(如字体大小)添加到所有 Django 管理页面?
- node.js - 我在 node.js 中一直遇到这个错误。错误:找不到模块
- java - 将数据从控制器传递到 Ajax Java Spring MVC 时出现错误 500
- linux - 我如何知道用户何时连接?
- swift - 如果B等于0,如何基于变量A进行过滤,否则基于B?
- azure-application-insights - 为应用程序洞察警报电子邮件选择特定列
- python - 如果没有实现,动态实现 __str__
- swift - 如何确保占位符文本不会在swift 4中保存为数据库中的值