RegEx仅在跨多行的2个字符串之间匹配数字

xt0899hw  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(134)

我有下面的文本文件:

data:<SupplierParty 
data:xmlns="xxx">
data:  <cbc:CustomerAssignedAccountID schemeID="vendor-id">
data:    20750
data:  </cbc:CustomerAssignedAccountID>
data:  <cbc:AdditionalAccountID schemeID="cashflow:v1">151</cbc:AdditionalAccountID>

data:<SupplierParty 
data:xmlns="xxx">
data:  <cbc:CustomerAssignedAccountID schemeID="vendor-id">
data:    20751
data:  </cbc:CustomerAssignedAccountID>
data:  <cbc:AdditionalAccountID schemeID="cashflow:v1">151</cbc:AdditionalAccountID>

data:<SupplierParty 
data:xmlns="xxx">
data:  <cbc:CustomerAssignedAccountID schemeID="vendor-id">
data:    20752
data:  </cbc:CustomerAssignedAccountID>
data:  <cbc:AdditionalAccountID schemeID="cashflow:v1">151</cbc:AdditionalAccountID>

我只想提取值:

20750
20751
20752

从文件上。
我最接近的是:

(?<=vendor-id"\>)(.*?)(?=\<\/cbc:CustomerAssignedAccountID)

但本节录:

data:    20751
data:

我只要数字。
我该怎么做?

yrwegjxp

yrwegjxp1#

我不知道你使用的语言,但你可以尝试下面的正则表达式

(data:\s*<cbc:.*?>\s*)data:\s*(\d+)\s*(?=data:\s*</cbc:.*?>)

以下是匹配项
第一个
现在我添加了括号()来创建组

(\d+)  this group will give you the number which you need

现在我不知道你使用的是哪种语言,但你可以很容易地通过使用组提取该数字

xpszyzbs

xpszyzbs2#

我会这样做:
vendor-id">[^<]*?(\d+)
比赛将在匹配组1中。
重要的是?[^<]*之后,以便它匹配非贪婪。
https://regex101.com/r/e3eR6y/1

相关问题