Select 匹配正则表达式后的下一行
Select the next line after match regex
我目前正在使用扫描软件 "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”。在匹配组中。需要指出这一点以便进一步参与该问题。
描述
ordernr[\r\n]+([^\r\n]+)
此正则表达式将执行以下操作:
- 找到
ordernr
子串
- 将行放在
ordernr
捕获组 1 之后
例子
现场演示
https://regex101.com/r/dQ0gR6/1
示例文本
1. 21Sid1
2. Ordernr
3. E17222
4. By
5. Seller
样本匹配
[0][0] = Ordernr
3. E17222
[0][1] = 3. E17222
说明
NODE EXPLANATION
----------------------------------------------------------------------
ordernr 'ordernr'
----------------------------------------------------------------------
[\r\n]+ any character of: '\r' (carriage return),
'\n' (newline) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
( group and capture to :
----------------------------------------------------------------------
[^\r\n]+ any character except: '\r' (carriage
return), '\n' (newline) (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
) end of
----------------------------------------------------------------------
或者
只使用 look-around 捕获行,以便 ordernr
不包含在捕获组 0 中并容纳 \r
和 \n
(?<=ordernr\r|ordernr\n|ordernr\r\n)[^\r\n]+
现场演示
进行了一些谷歌搜索,据我所知,REGEXP.MATCH
的最后一个参数是要使用的捕获组。这意味着您可以使用自己的正则表达式,而无需 \K
,只需将捕获组添加到要提取的号码即可。
\bOrdernr\s+(\S+)
这意味着该数字最终在捕获组 1
中(整个匹配项在 0
中,我假设您已经使用过)。
文档不crystal清楚,但我猜语法是
REGEXP.MATCH(<ZoneName>, "REGEX", CaptureGroup)
意味着你应该使用
REGEXP.MATCH(<ZoneName>, "\bOrdernr\s+(\S+)", 1)
虽然这里有很多猜测......;)
我目前正在使用扫描软件 "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”。在匹配组中。需要指出这一点以便进一步参与该问题。
描述
ordernr[\r\n]+([^\r\n]+)
此正则表达式将执行以下操作:
- 找到
ordernr
子串 - 将行放在
ordernr
捕获组 1 之后
例子
现场演示
https://regex101.com/r/dQ0gR6/1
示例文本
1. 21Sid1
2. Ordernr
3. E17222
4. By
5. Seller
样本匹配
[0][0] = Ordernr
3. E17222
[0][1] = 3. E17222
说明
NODE EXPLANATION
----------------------------------------------------------------------
ordernr 'ordernr'
----------------------------------------------------------------------
[\r\n]+ any character of: '\r' (carriage return),
'\n' (newline) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
( group and capture to :
----------------------------------------------------------------------
[^\r\n]+ any character except: '\r' (carriage
return), '\n' (newline) (1 or more times
(matching the most amount possible))
----------------------------------------------------------------------
) end of
----------------------------------------------------------------------
或者
只使用 look-around 捕获行,以便 ordernr
不包含在捕获组 0 中并容纳 \r
和 \n
(?<=ordernr\r|ordernr\n|ordernr\r\n)[^\r\n]+
现场演示
进行了一些谷歌搜索,据我所知,REGEXP.MATCH
的最后一个参数是要使用的捕获组。这意味着您可以使用自己的正则表达式,而无需 \K
,只需将捕获组添加到要提取的号码即可。
\bOrdernr\s+(\S+)
这意味着该数字最终在捕获组 1
中(整个匹配项在 0
中,我假设您已经使用过)。
文档不crystal清楚,但我猜语法是
REGEXP.MATCH(<ZoneName>, "REGEX", CaptureGroup)
意味着你应该使用
REGEXP.MATCH(<ZoneName>, "\bOrdernr\s+(\S+)", 1)
虽然这里有很多猜测......;)