我目前正在使用扫描软件“Drivve Image”从每张纸中提取某些信息。该软件可以在需要时运行某些Regex代码。它似乎与UltraEdit Regex Engine一起运行。
我得到以下扫描结果:
1. 21Sid1
2. Ordernr
3. E17222
4. By
5. Seller
我需要在字符串中搜索文本
Ordernr
,然后选择以下行E17222
,最后将其表示为扫描文档的文件名。我永远不会知道这两个值在字符串中的确切位置。这就是为什么我需要专注于Ordernr
的原因,因为我需要的文本将始终作为下一行。我的要求是,我需要
E17222
是匹配结果中唯一的东西才能起作用。我只允许键入纯正则表达式。 已经有一个很棒的线程:Regex to get the words after matching string
我已经测试了“\bOrdernr\s +\K\S + ”,它很棒。
如果不是该软件不允许使用/K。还有其他实现\K的方法吗?
延续
尽管如果示例文本在“Ordernr”后面包含一个字符,则当前答案在我需要的范围内不起作用。像这个样本:
21Sid1
Ordernr 1
E17222
经过
卖方
当前解决方案选择的是“1”,而不是“下一行”,该行将是“ E17222 ”。在匹配的组中。需要指出这一点,以便进一步参与该问题。
最佳答案
进行了一些谷歌搜索,据我所知,REGEXP.MATCH
的最后一个参数是要使用的捕获组。这意味着您可以使用自己的正则表达式,而无需使用\K
,而只需将捕获组添加到要提取的数字中即可。
\bOrdernr\s+(\S+)
这意味着该数字最终出现在捕获组
1
中(整个匹配项在0
中,我认为您已经使用过)。该文档尚不清楚,但我想语法是
REGEXP.MATCH(<ZoneName>, "REGEX", CaptureGroup)
表示您应该使用
REGEXP.MATCH(<ZoneName>, "\bOrdernr\s+(\S+)", 1)
虽然这里有很多猜测...;)
关于regex - 选择匹配正则表达式后的下一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37526216/