[英]Regular Expression Matching with Carriage Returns in Python
我有以下数据,并希望匹配某些字符串,如下所述。
FTUS80 KWBC 081454 AAA\r\r TAF AMD #should match 'AAA'
LTUS41 KCTP 082111 RR3\r\r TMLLNS\r #should match 'RR3' and 'TMLLNS'
SRUS55 KSLC 082010\r\r HM5SLC\r\r #should match 'HM5SLC'
SRUS55 KSLC 082010\r\r SIGC \r\r #should match 'SIGC ' including whitespace
我需要满足以下条件。 但是,当我将它们放在一起时它不起作用,所以我知道我有错误。 提前致谢。
可能有一种更优雅的方法,但是您可以执行以下操作:
(?:\d{6}\s?)([A-Z\d]{3})?(?:[\r\n]{2}\s)([A-Z\d]{6}|[A-Z\d]{4}\s{2})?
(?:\\d{6}\\s?)
未捕获的6位数字组,后跟一个可选空格 ([AZ\\d]{3})?
可选的捕获组,每组3个大写字母/数字 (?:[\\r\\n]{2}\\s)
未捕获的两组行尾,后跟1个空格 ([AZ\\d]{6}|[AZ\\d]{4}\\s{2})?
可选的捕获组,包含6个大写字母/数字或4个大写字母/数字,后跟2个空格 目前尚不清楚这行的结尾是什么,但是假设它是Unix的\\n
,以下表达式将按要求捕获字符串(添加双引号以显示空白)
sed -rne 's/^.{18} ?([A-Z0-9]{3,3})?\r{2}?([^\r]+)?\r.*$/"\1\2"/p' text.txt
结果
"AAA"
"RR3 TMLLNS"
" HM5SLC"
" SIGC "
.{18}
前18个字符 ?([A-Z0-9]{3,3})?
匹配AAA或RR3,不带空格 \\r{2}?([^\\r]+)?\\r
与TMLLNS
, HM5SLC
或SIGC
匹配, HM5SLC
2个\\r
和后跟1个\\r
字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.