gpt4 book ai didi

python - 解决简单的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:43 24 4
gpt4 key购买 nike

我有一个文本文件,其中包含具有以下结构的行:

class.method(params)

我想获取类、方法和参数。请记住,有时没有参数,甚至可以没有括号。

到此为止

re.search(r'\w+', string)

但是如果params用引号括起来,就会被去掉,我想保留。

我如何保留它们?

例子:

>>> process('class.method(params)')
('class','method','params')
>>> process('class.method("params")')
('class','method','"params"')
>>> process('class.method('params')')
('class','method',''params'')
>>> process('class.method()')
('class','method','')
>>> process('class.method')
('class','method','')

最佳答案

这个怎么样?

>>> import re
>>> reg_exp = '(\w+)\.(\w+)\(?([^)]*)\)?'
>>> re.match(reg_exp, 'class.method("params")').groups()
('class', 'method', '"params"')
>>> re.match(reg_exp, "class.method('params')").groups()
('class', 'method', "'params'")
>>> re.match(reg_exp, "class.method()").groups()
('class', 'method', '')
>>> re.match(reg_exp, 'class.method(params)').groups()
('class', 'method', 'params')
>>> re.match(reg_exp, 'class.method').groups()
('class', 'method', '')
  • (\w+) 是匹配1个或多个字母数字字符的捕获组
  • ([^)]*) 是一个捕获组,匹配除)以外的任何字符
  • \(? 匹配 ( 或什么都不匹配
  • \)? 匹配 ) 或什么都不匹配

\(?([^)]*)\)? 有助于处理没有提供参数和括号的情况。

关于python - 解决简单的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com