gpt4 book ai didi

python - regEx 在 notepad++ 中有效,但在 python 中无效

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:03 29 4
gpt4 key购买 nike

假设我们有这个:

.................
=== Operation 'abcd::ddca:dsd' ended in 1.234s /1.234s (100.00%) execution time
................

使用 Notepad++ ,我可以通过以下方式识别它:

^\=* Operation '([\d\D]*)' ended in (\d*.\d*)s\s*/(\d*.\d*)s \([\d\D]*\) execution time

我希望将操作名称和执行时间分组。

在 python 中,试试这个:

exp=re.compile(r"^\=* Operation \'([\d\D]*)\' ended in (\d*.\d*)s\s*/(\d*.\d*)s \([\d\D]*\) execution time") 

什么都不提供。我已经尝试过 \\( 来转义文字括号,但它没有用。我猜我不需要这样做,因为我在使用 r[exp]"时构建对象表达式。

关于如何获得与在 notepad++ 中相同的结果的任何想法?

LE:只尝试过:

exp=re.compile(r"^\=* Operation \'([\d\D]*)\'", flags=re.MULTILINE)

仍然没有找到任何东西。

LE2:

稍后在我使用的代码中 groups=exp.match(INPUT)我用 groups.group(n)

得到了对

回答:问题是匹配。使用 search 修复了问题

最佳答案

问题中提到的正则表达式对我来说没有任何变化。

>>> s = """
... .................
... === Operation 'abcd::ddca:dsd' ended in 1.234s /1.234s (100.00%) execution time
... ................
... """
>>> import re
>>> exp = re.compile(r"^\=* Operation \'([\d\D]*)\' ended in (\d*.\d*)s\s*/(\d*.\d*)s \([\d\D]*\) execution time", flags=re.M)
>>> re.search(exp, s)
<_sre.SRE_Match object at 0x1038766b8>
>>> re.findall(exp, s)
[('abcd::ddca:dsd', '1.234', '1.234')]

不过要考虑两件事:

  1. 在标志参数中使用re.M
  2. 使用searchfindall 方法进行匹配。确保您没有使用 re.match,因为它只会匹配字符串的开头。

关于python - regEx 在 notepad++ 中有效,但在 python 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824220/

29 4 0
文章推荐: python - 简单查询 : Why does it say this variable is undefined?
文章推荐: css - 使用 Flexbox 在 上模拟 "rowspan"