正则表达式仅匹配特定格式的带或不带数字的大写字符串

Anj*_*i A 3 python regex text

我有以下字符串列表:

list1 = ['KVC Company','this is a sample', 'TEL 555-555-5555', 'DATE: 05/12/2021', 
'50 KG LOADER', 'COMPUTER SCIENCE', '13445556 AAA', 'MONDAY', 'AMT: 60', 'plenty', 
'data sources','USA 00000','EXM: J. Smith', 'X', 'FH']
Run Code Online (Sandbox Code Playgroud)

我正在使用以下正则表达式来过滤列表:

r'\b[A-Z]{3,}(?:\s+[A-Z]{3,})*\b.*$'
Run Code Online (Sandbox Code Playgroud)

此正则表达式匹配所有以大写字母开头的字符串,但不考虑其余字母。

我得到的输出如下,

output = ['KVC Company', 'TEL 555-555-5555', 'DATE: 05/12/2021', 'LOADER', 
'COMPUTER SCIENCE', 'AAA','MONDAY', 'AMT: 60', 'USA 00000','EXM: J. Smith']
Run Code Online (Sandbox Code Playgroud)

我想要的输出如下所示,

['50 KG LOADER', 'COMPUTER SCIENCE', 'MONDAY' ]
Run Code Online (Sandbox Code Playgroud)

它只包含完全大写的字符串,没有任何符号只有不超过 2 位的数字

如何过滤掉所有其他字符串并仅返回完全大写的字符串,只有 2 位数字,并且:,/,-字符串中的任何地方都没有任何符号和小写字母。

anu*_*ava 6

你可以在 Python 中使用这个正则表达式:

^(?!.*\d{3})(?=.*[A-Z]{3})[A-Z\d ]+$
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

正则表达式详情:

  • ^: 开始
  • (?!.*\d{3}):否定前瞻断言我们在任何地方都没有 3 位数
  • (?=.*[A-Z]{3}):正向预测断言我们在某处至少有 3 个连续的大写字母
  • [A-Z\d ]+: 匹配 1+ 个大写字母或数字或空格
  • $: 结尾