1

我有特殊情况,我需要删除一组(只有一个)字符[A-Z](仅限大写字母),后跟一个最多可以为 3 位的数字。

例如 - 来自 I/P:BA1040,E123,ZA650,B12 输出应该是:仅 E123 和 B12,我应该拒绝其他的,如 A1040 和 A650 等。

如果有一个字符/数字后跟一个字符,然后是数字,它也应该拒绝。例如 ZA650 不应该工作。如果仅是 A650 或 Z650,它会起作用。

我尝试了各种事情,简单的表达[A-Z]\d+也给了我错误的输出。

有人可以在这里帮助我吗?

4

4 回答 4

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.
于 2013-06-13T03:14:04.113 回答
2

使用以下正则表达式 [A-Z]\d{0,3}

编辑——^[A-Z]\d{1,3}$ 如果你的搜索开始于A-Z并且可以有至少1和最多3 digits

于 2013-06-13T03:14:10.383 回答
0

正则表达式匹配你想要的(我认为)(字符后跟最多 3 位数字)是:

[A-Z][0-9]{,3}
于 2013-06-13T03:14:43.383 回答
0

试试这个使用单词边界的模式(用java风格编写)

\\b[A-Z]\\d{1,3}\\b

有关单词边界的更多信息在这里

于 2013-06-13T03:40:04.250 回答