Skip to main content
 首页 » 编程设计

python之正则表达式匹配没有指定空格的字符

2024年09月03日28arxive

我的正则表达式也可以找到here ,尽管我手动插入字符以查找回车符。

((?:\d{6}?)([A-Z\d]{3})?(?:[\^r\ ]+)(([A-Z\d]{6}|[A-Z\d]{5} |[A-Z\d]{4}  ))?) 

我在 5 和 4 个字符的字符串后指定了一个空格,但我的正则表达式似乎至少在第一行忽略了它。它匹配“扩展”,即使我不希望它匹配。只有后面有空格。它在第三行使用“XOBUS”工作。

FPCN54 CWNT 080810^r^r EXTENDED FORE    #should not match anything 
ASUS42 KMHX 080425^r^r RWRMHX^r^r WEAT  #should match RWRMHX 
RXUS30 KWNO 081300^r^r XOBUS ^r^r GREA  #should match XOBUS w/ 1 trailing space 
FXUS64 KEWX 081112 RR3^r^r AFDEWX^r^r   #should match RR3 and AFDEWX 

编辑:忘记在第一个回车前包含 3 个字符的字母数字。请参阅第 4 行。还需要捕获它。

请您参考如下方法:

根据您上面想要的输出,您使正则表达式过于复杂。 **顺便说一句,上面你说的是“5 或 4 个字符的字符串”,但在你想要的输出中,你有一个“6”个字符串和一个 3 个字符的字符串。

>>> import re 
 
 
 
>>> string = '''FPCN54 CWNT 080810^r^r EXTENDED FORE    #should not match  
anything 
ASUS42 KMHX 080425^r^r RWRMHX^r^r WEAT  #should match RWRMHX 
RXUS30 KWNO 081300^r^r XOBUS ^r^r GREA  #should match XOBUS w/ 1 trailing  
space 
FXUS64 KEWX 081112 RR3^r^r RR3555^r^r AFDEWX^r^r   #should match RR3, RR3555, and AFDEWX''' 
 
 
 
>>> re.findall('(?m)([\d]*[A-Z]+(?:[A-Z]*[\d]*)*[\s]*)[\^r]{2,}', string) 
 
 
 
#OUTPUT 
['RWRMHX', 'XOBUS ', 'RR3', 'AFDEWX', 'RR3555']