正则表达式匹配字符串中的页码

时间:2016-05-03 07:00:45

标签: regex

我想弄清楚如何匹配以下条形码字符串:

Invoice CO1234 1234567890 06.01.2016 06.01.2016 USD 6.72 1 1

Elements explanation by possition:
1st - document type
2nd - document related number
3rd - document related number
4th - date
5th - date
6th - Currency
7th - Sum
8th - page number ( i need the regex to match when the page is equal to "1")
9th - total pages

总和之外的所有都是相同的长度。总和可能会增长到100或1000 ......

在这种情况下是否可以匹配页码?

  

注意:向后匹配字符串不是一个选项,因为那里   可能是一些附加的文件到上面的那个和   字符串会变得更长。

2 个答案:

答案 0 :(得分:0)

这个正则表达式将起作用

IllegalArgumentException

<强> Regex Demo

您似乎想要(\d+)\s+\d+$ <-- Match in 1st capturing group 。在这种情况下,您可以使用

forward matching

从您之前的问题看,您正在使用^(?:[^\s]+\s){7}([^\s]+) <-- Match in 1st capturing group 。在这种情况下,您可以使用此

vbscript

<强> Idoene Demo

答案 1 :(得分:0)

您不需要正则表达式来实现您想要的效果。您可以在字段分隔符''上拆分字符串,然后取第8个字段。 例如,使用python:

input = "Invoice CO1234 1234567890 06.01.2016 06.01.2016 USD 6.72 1 1"
input.split(' ')[7]

或者,如果你真的想使用正则表达式,你可以使用类似的东西:

import re
input = "Invoice CO1234 1234567890 06.01.2016 06.01.2016 USD 6.72 1 1"
re.search(r"^([^ ]* ){7}([^ ]*)", input).group(2)