nfa = compiled_regex._pattern._compiler.compile() AttributeError: 're.Pattern' object has no attribute '_pattern'
时间: 2023-06-21 08:10:04 浏览: 121
这个错误通常是由于使用了Python 3.7或更高版本中的`re.compile()`函数的返回值(即`re.Pattern`对象),而不是旧版本中返回的`_sre.SRE_Pattern`对象。`_sre.SRE_Pattern`对象具有`_pattern`属性,而`re.Pattern`对象没有该属性。
解决这个问题的方法是使用旧版本的`re`模块,或者使用`re.compile()`函数的字符串模式作为参数,而不是将其结果存储在变量中。例如,可以尝试以下代码:
```
import re
regex = r'\d+'
nfa = re.compile(regex)._compiler.compile()
```
这将避免直接使用`re.Pattern`对象,并使代码更具可移植性。
相关问题
nfa = re.compile(regex)._compiler.compile() AttributeError: 're.Pattern' object has no attribute '_compiler'
这个错误通常是由于使用较旧版本的 Python 导致的。在 Python 3.7 及更高版本中,不再使用 `_compiler` 属性来编译正则表达式。相反,您可以直接使用 `re.compile()` 方法来编译正则表达式。
如果您使用的是 Python 3.7 或更高版本,可以尝试删除代码中使用 `_compiler` 的部分,并使用 `re.compile()` 方法编译正则表达式。
如果您使用的是较旧版本的 Python,则需要升级到 Python 3.7 或更高版本才能使用此方法。
n parse_regex(regex) 66 start.add_transition(None, left) 67 start.add_transition(None, right) ---> 68 left.add_transition(None, accept) 69 right.add_transition(None, accept) 70 state_stack.append(NFA(start, accept)) AttributeError: 'NFA' object has no attribute 'add_transition'
这个错误的原因是 `NFA` 对象没有 `add_transition()` 方法。 可能是你在代码中使用了一个过时的版本或者是不完整的实现,或者是你手动修改了代码但没有正确地实现 `add_transition()` 方法。
你需要检查你的代码,确保你的 `NFA` 类包含了正确的方法。你也可以尝试查看其他人实现的 `NFA` 类,看看你的实现是否有缺陷。
阅读全文