排除正则表达式的结果

时间:2011-05-14 19:03:21

标签: regex

如何从以下正则表达式的每组末尾排除字母字符:

\b([0-9]{1,2}\w)?([0-9]{1,2}\w)?([0-9]{1,2}\w)?([0-9]{1,2}\w)\b

谢谢!

2 个答案:

答案 0 :(得分:4)

使用可选的非捕获组,并将捕获的组移动到其中:

\b(?:([0-9]{1,2})\w)?(?:([0-9]{1,2})\w)?(?:([0-9]{1,2})\w)?(?:([0-9]{1,2})\w)\b
     \__________/       \__________/       \__________/       \__________/
          1                   2                 3                  4  
  • (...) - 群组将被捕获,就像现在一样。
  • (?:...) - 非捕获组。用于对数字和字母数字进行分组,因此它们都是可选的:(?:...)?

请注意,\w还包含数字和下划线,因此您可能会遇到意外结果。

答案 1 :(得分:1)

您可以排除这样的alpha:

[^a-zA-Z]

^表示“不是”。