在可能的多个括号中找到字符串?

2024-09-28 01:27:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个正则表达式,用于区分包含括在圆括号之间的数值的字符串和包含圆括号之外的数值的字符串。问题是,括号可能相互嵌入:

例如,表达式应该匹配以下字符串:

  • 嘿(例1)
  • 还有(这个(onetoo2(硬)))
  • 但是(这是一个(更难的)可能是23)呵呵)

但不应与以下任何一项匹配:

  • 这(一)是错误的
  • 与多个父母在一起

到目前为止我已经试过了

\d[A-Za-z] \)

像这样简单的事情。这个的问题是它与示例2不匹配,因为它后面有一个(字符串)。你知道吗

我怎么才能解决这个问题?你知道吗


Tags: 字符串示例表达式错误事情括号区分数值
2条回答

问题不在于模式匹配。这意味着正则表达式不是实现这一点的合适工具。你知道吗

相反,你需要词法分析和解析。有many libraries available for that job。你知道吗

您可以尝试使用^{}^{}库。你知道吗

这些类型的正则表达式并不总是容易的,但有时只要输入保持一定的一致性,就可以想出一种方法。通常这样的模式应该有效:

(.*(\([\d]+[^(].*\)|\(.*[^)][\d]+.*\)).*)

强代码:

import re

p = re.compile(ur'(.*(\([\d]+[^(].*\)|\(.*[^)][\d]+.*\)).*)', re.MULTILINE)

result = re.findall(p, searchtext)
print(result)

结果

https://regex101.com/r/aL8bB8/1

相关问题 更多 >

    热门问题