我有一个特殊情况,我需要删除一组(仅一个)字符[A-Z]
(仅限上限),然后是一个最多可以是3位的数字。
例如 - 来自I / P:BA1040,E123,ZA650,B12
输出应该是:仅E123和B12,我应该拒绝像A1040和A650等其他人。
如果有一个字符/数字后跟一个字符然后是数字,它也应该拒绝。例如ZA650不应该工作。如果只是A650或Z650,它会起作用。
我尝试过各种各样的事情,像[A-Z]\d+
之类的简单表达也给了我错误的输出。
有人可以帮助我吗?
答案 0 :(得分:2)
使用{m,n}
语法指定最大或最小重复次数。既然你之前不想要一个数字或之前有一个字母,那就使用负向前瞻和后视:
(?<![A-Z])[A-Z]\d{1,3}(?!\d)
这意味着:
(?<![A-Z]) -- (Negative lookbehind) Forbid `A-Z` before the match.
[A-Z] -- A single capital letter.
\d{1,3} -- At least 1 digit but not more than 3.
(?!\d) -- (Negative lookahead) Forbid digit after the match.
答案 1 :(得分:2)
使用以下正则表达式[A-Z]\d{0,3}
编辑 - ^[A-Z]\d{1,3}$
如果您的搜索以A-Z
开头,且至少可以1
且最多3 digits
答案 2 :(得分:0)
正则表达式匹配你想要的(我认为)(字符后跟最多3位数字)是:
[A-Z][0-9]{,3}
答案 3 :(得分:0)