我的文本行如下所示: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演示