我有两列,一列包含一串数字,一列包含两个或三个数字,如下所示:
Account number
0 5493455646944
1 56998884221
2 95853255555926
3 5055555555495718323
4 56999998247361
5 6506569568
我想创建一个regex函数,如果帐号包含5个或更多连续重复的数字,它会显示一个标志。
因此,理论上,目标状态如下:
Account number test
0 5493455646944 No
1 56998884221 No
2 95853255555926 Yes
3 5055555555495718323 Yes
4 56999998247361 Yes
5 6506569568 No
我在想:
def reg_finder(x):
return re.findall('^([0-9])\1{5,}$', x)
我不擅长使用regex,所以不确定...谢谢
编辑:这是我试过的:
def reg_finder(x):
return re.findall('\b(\d)\1+\b', x)
example_df['test'] = example_df['Account number'].apply(reg_finder)
Account number test
0 5493455646944 []
1 56998884221 []
2 95853255555926 []
3 5055555555495718323 []
4 56999998247361 []
5 6506569568 []
3条答案
按热度按时间bejyjqdl1#
正则表达式
re.findall('^([0-9])\1{5,}$', x)
中的问题:1.你使用
^
和$
,用来匹配整个字符串是连续的。1.您要匹配的 * 包含5个以上的 *,
\1
已经是一个匹配项,您只需要4个以上。您可以使用
tvokkenx2#
您可以使用
输出:
注意,
r'([0-9])\1{4,}'
正则表达式是用原始字符串文字定义的,其中反斜杠被解析为文字反斜杠,而不是字符串转义序列辅助字符。dzjeubhm3#
输出: