匹配两组不同的连续数字Regex Python



我正在使用regex根据虚荣电话号码的模式对其列表进行分类。

我想捕捉这个图案5ABXXXYYY

样品534666999

我写了下面的regex,它捕获了XXXYYY

(d)1{2}(d)2{2}

我想添加一个条件来断言BX不是同一个数字。

所需的输出将与给定的模式完全匹配,并用单词silver替换。

S_2 = 534666999
S_2_pattern = re.sub(r"(d)2{2}(d)3{2}", "Silver", str(S_2))
print(S_2_pattern)
Silver

感谢

如果要匹配9位数字,并且第3位数字不应与第4位数字相同,则可以为第3位添加另一个捕获组,之后的所有组号都将增加1。

bdd(d)(?!1)(d)22(d)33b
  • b防止部分单词匹配的单词边界
  • dd匹配2位数字
  • (d)(?!1)捕获组1中的一个数字,并断言它后面没有相同的数字
  • (d)22捕获第2组中的一个数字,并匹配该数字后的2倍相同数字
  • (d)33捕获第3组中的一个数字,并匹配该数字后的2倍相同数字
  • bA字边界

Regex演示

如果第2组中的前3位数字也应与第3组中的后3位数字不同:

bdd(d)(?!1)(d)(?!dd2)22(d)33b

Regex演示

最新更新