Python中的正则表达式与回车符匹配

时间:2019-04-18 01:28:16

标签: python regex

我有以下数据,并且想要匹配某些字符串,如下所述。

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

我需要满足以下条件。但是,当我将它们放在一起时它不起作用,所以我知道我有错误。预先感谢。

  • 在6位数字字符串之后开始比赛:(?<= \ d {6})
  • 如果3个字符混合使用大写字母/数字并且在前两个回车之前返回,则匹配:([A-Z0-9] {3})(?= \ r)
  • 如果回车后6个字符混合使用大写/数字,则匹配:(?<= \ r \ r [A-Z0-9] {6})
  • 如果有4个字符和两个空格,则匹配:([A-Z0-9] {4})

1 个答案:

答案 0 :(得分:0)

目前尚不清楚这行的结尾是什么,但是假设它是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]+)?\rTMLLNSHM5SLCSIGC匹配,后跟2个\r和1个\r个字符。