Regex忽略行项目编号和金额之间的所有字符
我的文本行如下所示: 1 SE20040021 B18204015560 24-04-2020 ABC LO 500319L 224.55 2 SE20040022 B10204006583 24-04-2020 KAR 170363Y 388.05 其中,字符串开头的1或2=行项目编号(行项目编号预先指定为1、2、3等) 其中224.55或388.05=金额(始终以带2位小数的正数表示) 我想要一个正则表达式,在搜索预先指定的行项目编号后,它会忽略行项目编号和金额之间未指定数量的字符 第1行或第2行中未指定的字符数为 1 SE20040021 B18204015560 24-04-2020 ABC LO 500319L 2 SE20040022 B10204006583 24-04-2020 KAR 170363Y 返回的结果是: 对于行项目1,仅返回字符串224.55 对于行项目2,仅返回字符串388.05 下面是我用来返回数字字符串的内容(^[0-9]+\d*\d*$)Regex忽略行项目编号和金额之间的所有字符,regex,Regex,我的文本行如下所示: 1 SE20040021 B18204015560 24-04-2020 ABC LO 500319L 224.55 2 SE20040022 B10204006583 24-04-2020 KAR 170363Y 388.05 其中,字符串开头的1或2=行项目编号(行项目编号预先指定为1、2、3等) 其中224.55或388.05=金额(始终以带2位小数的正数表示) 我想要一个正则表达式,在搜索预先指定的行项目编号后,它会忽略行项目编号和金额之间未指定数量的字符 第1行或
但我不知道如何将模式与行项目1匹配并返回数字字符串。要获得这两个值,您可以使用两个捕获组,并将第一个组后的空格与最后一个组前的空格进行匹配
^(\d+) .* (\d+\.\d{2})$
部分地
字符串的开头^
捕获组1,匹配1+个数字(\d+)
匹配一个空格,除换行符外的任何字符0+次,然后再匹配一个空格*
捕获组2,匹配1+个数字、一个点和2个数字(\d+\.\d{2})
字符串结尾$
Line Item Number $1 = $2
更新
您也可以使用积极的回顾:
(?<=^1 .* )\d+\.\d{2}
(?要获取这两个值,可以使用两个捕获组,并匹配第一个组后的空间和最后一个组前的空间
^(\d+) .* (\d+\.\d{2})$
部分地
^
字符串的开头
(\d+)
捕获组1,匹配1+个数字
*
匹配一个空格,除换行符外的任何字符0+次,然后再匹配一个空格
(\d+\.\d{2})
捕获组2,匹配1+个数字、一个点和2个数字
$
字符串结尾
然后,您可以使用以下两组进行替换:
Line Item Number $1 = $2
更新
您也可以使用积极的回顾:
(?<=^1 .* )\d+\.\d{2}
(?Oops.好的,我没有得到第1组的捕获。但是在那之后它似乎起作用了。这是我对行项目编号1^(1)。*(\d+\.\d{2}$)我正在尝试这个。它似乎在正则表达式演示中起作用。我得到的是正确的吗?^(1)。*(\d+\.\d{2}$^(2)。*(\d+\.\d+.\d{2}$是的,你可以硬编码第一组的值^(1)。*(\d+.\d}{2})$
请参见第1行金额:捕获错误-无法使用正则表达式“\b(?^(1)。*(\d+\.\d{2})$)\b”匹配值。我得到了一个非常奇怪的结果。工具或语言是什么?像这样尝试^(?1)。*(\d+\.\d{2})$
Oops。好的,我没有获得组1捕获。但是在那之后,它似乎起作用了。下面是我对行项目编号1^(1)使用的内容*(\d+\.\d{2})$)我正在尝试这个。它似乎在Regex演示中起作用。我说的对吗^(1) .*(\d+\.\d{2})$^(2)。*(\d+\.\d{2})$是的,您可以硬编码第一组的值^(1)。*(\d+\.\d{2})$
请参见第1行项目金额:捕获错误-无法使用regex'\b(?^(1)。*(\d+\.\d{2})$)\b'我得到了这个非常奇怪的结果,工具或语言是什么?像这样尝试^(?1)。*(\d+\.\d{2})$