【发布时间】:2011-05-14 16:45:04
【问题描述】:
我想解析一个正则表达式列表来计算每个在某个文本/字符串中找到匹配项的可能性...
例如。在长度为 1 的字符串中查找 '[AB]' 应该是 1/13 左右(仅考虑大写字母)。
是否有一个通用的正则表达式解析器,它返回各个位置/替代方案?
我正在考虑获取职位列表作为回报('[AB].A{2}' 将产生 '[['A','B'],'.',['AA']')
问题是用pyparsing解析正则表达式。
简单的正则表达式没有问题,但是当涉及到“替代”和重复时,我迷失了:我发现很难解析像'((A[AB])|(AB))'这样的嵌套表达式。
有什么想法吗?
【问题讨论】:
-
前段时间我写了一篇关于高尔夫的代码 (stackoverflow.com/questions/3523323/code-golf-regex-parser)。作为代码高尔夫,大多数答案都会有点难以破译。但是同样的问题也出现了,比我聪明得多的人会被找到方法。 :-)
-
我回答了您的可能性问题,现在我看到您对正则表达式解析器的存在有第二个问题。必须至少有一个这样的解析器,即 Python 使用的解析器。如果您清楚地将您的问题标记为与 Python 内部有关,您可能会从 Python 专家那里得到答案。
-
你看过 pyparsing wiki 上的这个例子吗? pyparsing.wikispaces.com/file/view/invRegex.py