0

我正在寻找以下条件的正则表达式:

输入 - 任意长度的字符串

输出 - 如果字符串包含正好 2 个大写字符或字符串包含正好 2 个数字,则返回 true。

真实案例

SS22

S5834534P

1ffgdfjdfS2

虚假案件

123SSS

SSSSSS

+++1++++1++++3

谢谢您的帮助。

4

1 回答 1

1
egrep '^(([^A-Z]*[A-Z][^A-Z]*[A-Z][^A-Z]*)|([^0-9]*[0-9][^0-9]*[0-9][^0-9]*))$' test.txt

这个想法是,如果你想找到恰好两个字符的匹配项,你需要找到具有以下内容的字符串:

  • 开始
  • 0 个或多个错误字符(例如,不是数字)
  • 正好一个需要的字符(数字)
  • 0 个或多个错误字符(不是数字)
  • 正好一个需要的字符(数字)
  • 0 个或多个错误字符(不是数字)
  • 结尾

编辑

较短的形式:

egrep '^(([^A-Z]*([A-Z][^A-Z]*){2})|([^0-9]*([0-9][^0-9]*){2}))$' test.txt
于 2013-04-17T00:30:28.247 回答