【发布时间】:2021-12-23 10:01:40
【问题描述】:
我有一个如下的数据框:-
df = pd.DataFrame([['Test-143'], ['Test-1435'], ['Test-123'],['Test-12']], columns = ['column1'])
df
column1
0 Test-143
1 Test-1435
2 Test-123
3 Test-12
现在我想用Test- 提取三位数的记录。这些记录是Test-143,Test-123。当我试图实现它时,当我使用诸如Test-\d\d,Test-\d{3} 之类的正则表达式模式时,我遇到了一些问题,它给了我所有记录,当我通过放置+$ 进行限制时,它给我一个错误,如下所示:-
res = df[df['column1'].str.match(re.compile(r'Test-\d{3}+$'),na=False)]
res
error: multiple repeat at position 10
错误是什么意思?如何获得异常输出:-
column1
0 Test-143
2 Test-123
【问题讨论】:
-
范围
{3}是一个自包含量词。在 Python 中,只有?可以叠加到量词上,而?是不情愿的。+不能在 Python 重新引擎中堆积(在正则表达式引擎中可以)。加号+的堆积是一个 PCRE / Perl(或 Python 正则表达式引擎)构造,意味着具有占有性,而不是回溯任何回溯(如果可以回溯)。它是 atomic 的简写。