Regex忽略行项目编号和金额之间的所有字符



我的文本行如下所示:1 SE20040021 B18204015560 24-04-2020 ABC LO 500319L 224.552 SE20040022 B10204006583 24-04-2020 KAR 170363Y 388.05

其中字符串开头的1或2=行项目编号(行项目编号预先指定为1、2、3等(其中224.55或388.05=金额(始终以正数表示,小数点后2位(

我想要一个Regex,在搜索预先指定的行项目编号后,它会忽略行项目编号和金额之间未指定数量的字符。

行项目1或2中未指定的字符数为

1 SE20040021 B18204015560 24-04-2020 ABC LO 500319L2 SE20040022 B10204006583 24-04-2020 KAR 170363Y

返回的结果是:对于行项目1仅返回字符串224.55对于行项目2仅返回字符串388.05

以下是我用来返回数字字符串的内容(^[0-9]+\d*.\d*$(但我不知道如何将模式和第1行匹配,并返回数字字符串。

要获得这两个值,可以使用两个捕获组,并匹配第一个组之后的空间和最后一个组之前的空间。

^(d+) .* (d+.d{2})$

部件内

  • ^字符串开始
  • (d+)捕获组1,匹配1+个数字
  • .*匹配一个空格,除了换行符之外的任何字符0+次,再匹配一个空间
  • (d+.d{2})捕获组2,匹配1个以上数字、一个点和2个数字
  • $字符串末尾

Regex演示

然后你可以使用例如使用2组替换:

Line Item Number $1 = $2

更新

你也可以使用一个积极的后备:

(?<=^1 .* )d+.d{2}

解释

  • (?<=正面向后看,断言左边的是
    • ^1字符串开头匹配1
    • .*匹配空格、除换行符0+次以外的任何字符和空格
  • )密切关注
  • d+.d{2}匹配1+位数字、一个点和2位数字

Regex演示

最新更新