我正在使用regex
Python3 中的模块,我希望能够检查字符串是否与“零或单一模板”C++ 数据类型相匹配,例如 Foo
, Foo<Bar>
, Foo<Bar<Baz>>
, Foo<Bar<Baz<Hello<World>>>>
等
目前,我有 (<X(?R)?>)*
,其中X
是一些文字。这几乎适用于给出的所有示例,只是它们必须被 <>
包围。自身也配对。
我正在寻找一种方法,能够在被认为是递归部分的前面添加一些文本。这可以用正则表达式实现吗?
最佳答案
regex
确实允许递归正则表达式(这些表达式不是严格正则的,这就是您获得冲突信息的原因),您只需要添加一个基本情况:
(?>\w+<(?R)>)|\w+
这与
匹配regex.match(r"(?>\w+<(?R)>)|\w+", "Foo<Bar<Baz>>")
# <regex.Match object; span=(0, 13), match='Foo<Bar<Baz>>'>
关于python - 我可以创建一个包含一些静态文本 "X"后跟递归文本的正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095918/