我正在分析财务文档,目标是将一行分成3个部分。例如,我有以下几行:
Telephone 9,000 9,000
当我使用这个regex命令时:
regex = r"([A-Za-z ]+)(?=\d|\S).*?([\d,]+)\s([\d,]+)"
re.findall(regex, <string>)
我得到的结果是:
('Telephone ', '5,172', '1,771')
现在假设我在这个财务报表中有负数(在财务文件中用括号表示):
string = Telephone (9,000) (9,000)
我如何通过计算括号把它分成三组?
我尝试过使用\(\*
和\)\*
来解释零个或更多的方括号,但它返回None
:
regex = r"([A-Za-z ]+)(?=\d|\S).*?(\(\*[\d,]+\)\.)\s(\(\*[\d,]+\)\)"
re.findall(regex, string)
如何更新regex函数来解释这种情况?你知道吗
另外,如果字符串有一个连字符,我该如何选取它?你知道吗
string = Telephone (9,000) -
以下模式适合我:
输出
你好像对逃逸很困惑。你的正则表达式有一些转义的
*
,所以我真的不知道你想在这里做什么。你知道吗假设所有输入都是格式良好的(即没有缺少括号或类似的内容),并且您只想提取三个值,您可以使用以下正则表达式:
第一部分和你的尝试是一样的。然后这个模式重复两次:
首先,我们匹配一些空格
\s+
,然后开始捕获组。在capture组中,我们首先查看是否有任何括号\(?
。?
是这里要使用的量词,因为我们允许使用0或1括号。然后是一个直接的字符类[\d,]+
来匹配数字,后面是一个可选的右括号\)?
。你知道吗Demo
相关问题 更多 >
编程相关推荐