【发布时间】:2016-09-28 07:35:09
【问题描述】:
我目前正在使用扫描软件“Drivve Image”从每篇论文中提取某些信息。如果需要,该软件可以运行某些 Regex 代码。它似乎与 UltraEdit 正则表达式引擎一起运行。
我得到以下扫描结果:
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
订单 1
E17222
由
卖家
当前解决方案选择“1”而不是“下一行”,即“E17222”。在匹配组中。需要指出这一点以进一步参与该问题。
【问题讨论】:
-
我怀疑lookbehind会起作用,但请尝试
(?<=\bOrdernr\r\n)\S+(如有必要,将换行符调整为\r或\n)。 -
您能否包含您正在使用的确切示例文本?
-
看来 Drivve Image 支持 .NET 正则表达式风格(link to download the PDF Manual),所以我上面的正则表达式可以写成
(?<=\bOrdernr[\r\n]+)\S+。不过,我觉得 ClasG 的建议是正确的。
标签: regex regex-negation regex-lookarounds