我正在尝试创建一个正则表达式,该正则表达式只应与示例中提供的段落中长度为11的字母数字字符匹配。问题是它还选择仅包含字母的字符串。
我的正则表达式和输入数据can be seen here。
示例文字:
RCLO DD 12-10-15 IAD RO N2905198759 PTD 12-08-15 SWC
CRO N2905198759 FCD 12-07-15 WOT 12-0
MCN 999LDCMCWCG PROJECT 309097-2 VER 04 OCO TSR BSRNCA70M00
WORK DESCRIPTION AND NOTES: CCO TSR BSRNCA70M00
MANUALLY
DIVERSER CIRCUITS SEE RPON, 9152 IRMK AAI DWGVILAZW02 IRMK ALCON IDR INFORMATION U
PDATED ON THE DESIGN AT HFESILWL AND EGVGILEG
模式是
\b([A-Z0-9]{11})\b
在上面的例子中,它不应该选择“DESCRIPTION”和“INFORMATION”
答案 0 :(得分:3)
您可以使用
\b(?=[A-Z]*[0-9])(?=[0-9]*[A-Z])[A-Z0-9]{11}\b
请参阅regex demo
<强>详情
\b
- 字边界(?=[A-Z]*[0-9])
- 在0+大写ASCII字母后,必须有1个ASCII数字(?=[0-9]*[A-Z])
- 在0+ ASCII数字后,必须有1个大写ASCII字母[A-Z0-9]{11}
- 11个大写ASCII字母或数字\b
- 一个尾随字边界。