我正在处理需要删除大文本数据的正则表达式。在运行正则表达式之前,我用一个空格替换所有空格,所有行,所以像这样的电子表格:
Something 50.00 10.00
Other Piece 100,00
成为这个:
Something 50.00 10.00 Other Piece 100,00
这个表具体来说,有4列,数量,名称,费用金额和总金额,这种方式:
01 Some Name 40,000 10.000
02 Some Name 40,000 10.000
03 Some Name 40,000 10.000
但有时,费用数额并不存在,只是总金额:
01有些名称10.000 01某些名称40,000 10.000
我只需要抓住总金额,所以我很难找到一个正则表达式来捕捉4值,如果3值存在的话。
我有多久了:
\b(?:228)\s.*?(?:[a-z]+)\s(?:[\d/.,]+)?\s([\d/.,]+)
如果存在3,则此RegExp捕获4号码,但当3号码不存在时,它将无法正常工作。所以,我想请求帮助。我怎样才能做到这一点?
我想做的是:
找到我定义的数字,如228,之后,找到名称,可以是一个或多个,如果1值存在则捕获2值,如果第二个没有&#39则捕获1值存在。
感谢!!!
更新 -
此外,我之前无法更改过程,因此我无法删除线条,空格等。我无法使用正则表达式:找到我定义的数字之后找到名称,然后找到下一个名称并捕获前一个值,因为有时下一个名称可能不存在。
感谢。
答案 0 :(得分:0)
希望这会有所帮助:
\b(?:228)\s+(?:[A-Za-z ]+?)\s+(?:[\d]+[.,][\d]+\s+)?([\d]+[.,][\d]+)
这假设名称没有特殊字符或数字(它们只有A到Z或空格)。另一个假设是费用和总金额总是有句号或逗号,并且在句号或逗号之后也有数字。
答案 1 :(得分:0)