我目前正在使用扫描软件“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/

10-12 00:24
查看更多