我有这个字符串,
irn
1b6d13bbbe6e0e4bd8e5d7619bf7997672
bc42d1d2442b531a487f9061df2626
但有时,会这样
irn
1b6d13bbbe6e0e4bd8e5d7619bf7997672bc42d1d2442b531a487f9061df2626
,或
irn
no
1b6d13bbbe6e0e4bd8e5d7619bf7997672
bc42d1d2442b531a487f9061df2626
或
irn
no
1b6d13bbbe6e0e4bd8e5d7619bf7997672bc42d1d2442b531a487f9061df2626
实际上,我正在阅读 pdf 的内容并获取输出, 所以我正在使用,
re.findall(r'\w+',payload)
拾取所有单词而不是任何其他字符。
我正在使用这个正则表达式来匹配上面的字符串,
irn(\s+?)(\w+\s+?)(([a-zA-Z0-9]{64})|([a-zA-Z0-9\s+]{65}))
这对工作正常
irn
no
1b6d13bbbe6e0e4bd8e5d7619bf7997672
bc42d1d2442b531a487f9061df2626
irn
no
1b6d13bbbe6e0e4bd8e5d7619bf7997672bc42d1d2442b531a487f9061df2626
但是对于这种情况:
irn
1b6d13bbbe6e0e4bd8e5d7619bf7997672
bc42d1d2442b531a487f9061df2626
第 2 组正在捕获第 2 行,第 6 组正在捕获第 3 行及后续行以下,直到 64 个字符。
由于我无法维护 pdf 中的数据格式,因此请您帮我解决这个问题。
实际上,该字符串将从“irn”开始,然后可能有也可能没有一些单词,然后irn编号将固定为64个字符长。
最佳答案
您可以将此正则表达式与第二行中的可选匹配一起使用:
^irn[\r\n]+(?:(\w+)[\r\n]+)?([a-zA-Z0-9\r\n]{64,65})$
说明:
^irn[\r\n]+
:匹配irn
后跟 1 个以上换行符(?:(\w+)[\r\n]+)?
:可选择匹配 1 个以上单词字符,后跟 1 个以上换行符并捕获第 1 组中的单词([a-zA-Z0-9\r\n]{64,65})
:匹配字母数字字符或换行符 64 或 65 次。在第 2 组中捕获此内容$
:结束
关于python - Python 3.x 中匹配此类字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70589130/