假设我有这样的文字:"AAAA1 AAA11 AA111AA A1111 AAAAA AAAA1111"
。
我想找到符合这3个标准的所有事件:
- 首字母1至4次
- 数字1至4次
-Max字符数为5
所以比赛将是:
{"AAAA1", "AAA11", "AA111", "A1111", "AAAA1"}
我试过
([A-Z]{1,4}[0-9]{1,4}){5}
但我知道它会失败,因为它正在寻找我的团队五次。
有没有办法将组的结果限制为5个字符?
由于
答案 0 :(得分:6)
您可以在匹配零件的同时检查图案时向前看限制字符数。
如果您可以按空格分割输入,则可以使用:
^(?=.{2,5}$)[A-Z]{1,4}[0-9]{1,4}$
请参阅demo here。
如果您无法按空格分割,则可以使用捕获组(?:^| )(?=.{2,5}(?=$| ))([A-Z]{1,4}[0-9]{1,4})(?=$| )
,或者使用lookbehind或\K
进行拆分,具体取决于您的正则表达式风格(请参阅demo)。< / p>
以前的答案,错误地匹配A1A1A
,在@a_guest评论后更新。
您可以使用前瞻来检查您的模式,同时使用正则表达式的匹配部分限制字符数:
(?=[A-Z]{1,4}[0-9]{1,4}).{2,5}
请参阅demo here。