Regex 不同长度的正则表达式多行
我有多行文字Regex 不同长度的正则表达式多行,regex,Regex,我有多行文字 Leui Centum 07 Base 9GALLON 2020-02-10 1,00 kg 461,90 461,90710201449 3899104400 EAN13 7344236003355 Leui Centum 07 Base 9GALLON 2020-02-10 1,00 kg 159,62 159,62050223 3248900000 EAN13 7358962113386 好吧,我已经尝试了一段时间来获取第3行第二个小
Leui Centum 07 Base 9GALLON
2020-02-10
1,00 kg 461,90 461,90710201449
3899104400
EAN13 7344236003355
Leui Centum 07 Base 9GALLON
2020-02-10
1,00 kg 159,62 159,62050223
3248900000
EAN13 7358962113386
好吧,我已经尝试了一段时间来获取第3行第二个小数点后面的最后一个字符 如果整条线都走了:
1,00 kg 159,62 159,62050223
^\d、[,$].+,…
带正则表达式:
我得到的价值是
1,00 kg 159,62 159,62
但我的目标是将值标记为粗体
1,00千克159,62 159,620502231,00千克461,90 461,90710201449 正如你所看到的,长度不匹配,因为整个文本中的行是数字。
当我尝试使用
$
时,除了第一行之外,我得到了所有的行。我想不出如何逃出去,只得到第三行,我不能使用
,因为长度不同。有什么建议吗 我已经能够通过这个简单的正则表达式实现这一点:
.*kg.*(\b\d+$)
说明:
搜索包含“kg”的行,并将该行末尾的数字放入捕获组。确保启用了多行标志
regex101.com上的演示:您的regex非常松散,请参见此示例 您需要查看第3行的实际需求,它是否始终采用您建议的格式?如果是这样的话,可以尝试以下带有捕获组的正则表达式来获取最终字符 要问的问题
^(\d+,?)+\d+(千克磅吨)(\d+,?)+\d+\d{3}、{2}(?\d+)
您所追求的值将在最终捕获组中我将使用一个事实,您想要的值之前的值将显示两次。有了这个预告,我们就可以知道从哪里开始捕捉你想要的价值了 这可以通过使用捕获组和对该组的引用来实现 正则表达式将是
^[\d,]+\s+kg\s+([\d,]+)\s+\1(\d+)\s*$
,带有i
(不敏感)和m
(^
和$
匹配行的开头和结尾)
在这里测试它:
说明:
将与数字和逗号匹配一次或多次^[\d,]+
用于一个或多个空格\s+
用于不区分大小写的kg\s+
单词,后面有空格kg
捕获第一个值,如461,90或159,62([\d,]+)
是对该捕获组的引用\1
是您要查找的第二个组:-)(\d+)
^(\d+,?)+\d+ (kg|lb|ton) (\d+,?)+\d+ \d{3},\d{2}(?<VALUE>\d+)