【发布时间】:2020-01-10 01:25:16
【问题描述】:
我有一个包含多个数字的变量。我想找到一个接一个只包含2个或多个重复数字的数字。这是 bash 等价物:
#!/usr/bin/env bash
numbers="1123456789
34312323445
6564323243
8975645345"
echo $numbers | egrep '0{2,10}|1{2,10}|2{2,10}|3{2,10}|4{2,10}|5{2,10}|6{2,10}|7{2,10}|8{2,10}|9{2,10}'
对于上述 bash 代码,我需要一个 Python 等效项。我尝试了以下方法,但没有按预期工作:
#!/usr/bin/env python3
import re
numbers = [1123456789, 34312323445, 6564323243, 8975645345]
pattern = re.compile('0{2,10}|1{2,10}|2{2,10}|3{2,10}|4{2,10}|5{2,10}|6{2,10}|7{2,10}|8{2,10}|9{2,10}')
for i in numbers:
if pattern.match(str(i)):
print(i)
bash sn-p 匹配1123456789 和34312323445 但python sn-p 仅匹配11234567890,即只有在重复数字出现在数字的乞求时才会发生匹配。
【问题讨论】:
-
re.match从头开始。re.search从任意位置开始。 -
echo -e把戏真的让我畏缩。您首先要在字符串中添加文字换行符;外壳微不足道地允许这样做。然后,您当然不需要循环将echo全部转至grep。 -
@tripleee 完成。希望这能让你现在感觉好多了:D
-
谢谢。不过,您现在可以简单地使用
echo "$numbers" | egrep ...而不使用for循环。 -
完成,删除
for循环