尽管我手动插入了字符以寻找回车符,但我的RegEx也可以找到here。
((?:\d{6}?)([A-Z\d]{3})?(?:[\^r\ ]+)(([A-Z\d]{6}|[A-Z\d]{5} |[A-Z\d]{4} ))?)
我在5和4字符串之后指定了空格,但是我的正则表达式似乎至少在第一行忽略了它。即使我不希望它也匹配“ EXTEND”。仅在后面有空格时。尽管与“ 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行。也需要捕获它。
答案 0 :(得分:2)
根据上面的期望输出,您使正则表达式过于复杂。 **顺便说一句,您在上面说的是“ 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']
答案 1 :(得分:0)
This RegEx可能会帮助您执行精确匹配,并且根据需要将字符串输入分成几组,并重建目标输出:
Left panel/Project tree
您可以删除所需的任何组color
,并且该组仍将匹配。
您可以根据需要减少边界。