Соответствующие символы RegEx, для которых не указано пространство - PullRequest
2 голосов
/ 22 апреля 2019

Мой RegEx также можно найти здесь , хотя я вручную вставил символы для поиска возврата каретки.

((?:\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

Редактировать: Забыл добавить трехбуквенный буквенно-цифровой символ перед первым возвратом каретки.См. Строку 4. Необходимо также это зафиксировать.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Исходя из желаемого результата выше, вы слишком усложняете регулярное выражение. ** Кстати, выше вы сказали, «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']
0 голосов
/ 22 апреля 2019

Этот RegEx может помочь вам выполнить точное совпадение и разделить ваши строковые входы на несколько групп, если / как вы пожелаете, и восстановить целевые выходы:

([A-Z0-9]{6})\s([A-Z]{4})\s([0-9]{6})([\^|r])+\s([A-Z]+)([\^|r\s]+)(.+)

Выможет удалить любую группу (), которую вы пожелаете, и она все равно будет соответствовать.

RegEx

Вы можете уменьшить границы, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...