python - 我可以创建一个包含一些静态文本 "X"后跟递归文本的正则表达式吗?

标签 python regex recursion

我正在使用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/

相关文章:

java - 如何构造我的程序以返回递归函数的成功输出?

python - 重新调整视频帧之间的时间差

python - Python 相对于 Ruby 的限制 : lambda's

python - 使用 python 确定时间戳是否在夏令时

javascript - 使用正则表达式,我如何多次匹配 XML 标记?

ruby - 在 ruby 中存储正则表达式匹配?

python - 如何从C :\Python37\Scripts?创建类似于pip.exe、jupyter.exe等的.exe

sql - 使用 Oracle 正则表达式查找精确长度为 3 的数字

objective-c - Objective C 递归问题?

c++ - 递归函数如何返回它的值?