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,62050223
1,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
      单词,后面有空格

    • ([\d,]+)
      捕获第一个值,如461,90或159,62

    • \1
      是对该捕获组的引用

    • (\d+)
      是您要查找的第二个组:-)


    这是一个非常松散的正则表达式。将匹配任何字符,因此您将匹配字符串“foobar kg!!!??12121212”可能不是您想要的!好吧,我想话题发起者可以决定这是不是他想要的。鉴于他的数据结构,它工作得很好,而且易于阅读。当然,如果数据结构变化很大,那么他需要一个更复杂的解决方案。嗨,pavel,这一个给了我整数,达到逗号,我想从第二个小数点中排除它,比如:1,00 kg 159,62 159620505223我想050223和:1,00 kg 461,90 46190710201449我想710201449结构更复杂,但是我们可以暂时不讨论整个数据结构,因为首先要做的事情是:)嘿@friend,所以在像1234567这样的昏迷变成4567之后,你需要从两位数开始输入一个数字?对吗?对,正则表达式对于我的知识来说似乎有点复杂。这将匹配以下内容“,,,,,,,,,,,,,,,kg,,,,,,,,,,12345”我想这取决于数据文件的规范,因为这是否会发生以及如果发生会发生什么does@Damo是的,没错!知道如何编写正则表达式的最好的人是知道数据包含什么的人!没错,我们只是在猜测真正的业务需求价值参考给了我正确的价值!非常感谢。你不仅解决了问题,而且给了我很好的洞察力!是否可以在自动化中使用regex,实际上是为了清洁PDF,我对regex有点陌生,假设我们有不同的供应商,他们用PDF发送账单,但布局不同。regex是否可以清理所有PDF的数据以获得desierd输出?这是一个比您最初在这里询问的regex更大的问题。我没有这样做的经验,这是可能的,我建议再问一个关于stackoverflow的问题
    ^(\d+,?)+\d+ (kg|lb|ton) (\d+,?)+\d+ \d{3},\d{2}(?<VALUE>\d+)