我正在尝试使用正则表达式在 2 个特定单词之间提取数字。问题是它们是多行的。我正在尝试从 PDF 中提取这些内容,因此它只能在这两个词之间
WORD1:
(23)
(56)
(78)
END
我试过这个\((.*?)\)
,它在 () 之间提取数字,但我需要它只在单词WORD1和END之间搜索,而不是整个 PDF。有没有办法做到这一点?
Expected Output:
23
56
78
使用\G
构造
(?s)(?:(WORD1:)(?=(?:(?!WORD1:|END).)*?\d(?:(?!WORD1:|END).)*END)|(?!^)\G)(?:(?!\d|WORD1:|END).)*?\K\d+
https://regex101.com/r/il00WG/1
解释
(?s) # Dot-all inline modifier
(?:
( WORD1: ) # (1), Flag start of new set
(?= # Lookahead, must be a digit before the END
(?:
(?! WORD1: | END )
.
)*?
\d
(?:
(?! WORD1: | END )
.
)*
END
)
| # OR,
(?! ^ )
\G # Start where last match left off
)
(?:
(?! \d | WORD1: | END ) # Go past non-digits
.
)*?
\K # Ignor previous match up to here
\d+ # Digits, the only match
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句