【发布时间】:2019-10-23 16:17:53
【问题描述】:
我正在尝试将某些文本行匹配到 RegEx (PCRE) 中的特定字符串。这是一个例子:
000000
999999900
20.10.19
Amoxicillin 1000 Heumann 20 Filmtbl. N2 - PZN: 04472730
-
Dr. Max Mustermann
在本文中,我想完全匹配这部分:
Amoxicillin 1000 Heumann 20 Filmtbl. N2
相似之处始终是 PZN 的部分和我想匹配的每一行末尾的 7-8 位数字。但是,PZN 部分有时可能位于下一行,而不是直接位于其后面:
000000
999999900
20.10.19
Amoxicillin 1000 Heumann 20 Filmtbl. N2
- PZN: 04472730
-
Dr. Max Mustermann
所以它要么直接在它后面,要么在下一行。我已经尝试使用这个 RegEx 来做到这一点:
.*(?=[ \-\r\n]+PZN)
这确实有效,但是,在上面的第一个示例中,它与此匹配:
Amoxicillin 1000 Heumann 20 Filmtbl. N2 -
注意末尾的“-”。这不应该包含在比赛中。我想 RegEx 优先考虑 .* 部分,因为它是从左到右工作的,因此只删除了前瞻的最后一个字符。不过,我不知道该怎么做。
有什么想法吗?
【问题讨论】:
-
或尝试捕获组
^(?![^\S\r\n]*$)(.+)\s* - PZN: \d{7,8}$见regex101.com/r/niOnv7/1