python - Python 3.x 中匹配此类字符串的正则表达式

标签 python regex

我有这个字符串,

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})$

RegEx Demo

说明:

  • ^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/

相关文章:

Python 聚类 'purity' 指标

regex - Firebase 规则正则表达式问题

r - 在 R 中使用正则表达式提取文本时出错

python - Matlab到Python的转换: "poissinv" function

python - Random.Randint() 重复

regex - Lookbehind 和 Lookaround 概念在 TCL 正则表达式引擎中有用吗?

javascript - 这个简单的 JavaScript 代码有什么问题?

javascript - 解析 CSS 背景图像 2015

python - Numpy 中的类似分散操作

python - Locust,如何从 LoadTestShape 访问自定义命令行参数