我正在使用regex根据虚荣电话号码的模式对其列表进行分类。
我想捕捉这个图案5ABXXXYYY
样品534666999
我写了下面的regex,它捕获了XXXYYY
。
(d)1{2}(d)2{2}
我想添加一个条件来断言B
与X
不是同一个数字。
所需的输出将与给定的模式完全匹配,并用单词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倍相同数字b
A字边界
Regex演示
如果第2组中的前3位数字也应与第3组中的后3位数字不同:
bdd(d)(?!1)(d)(?!dd2)22(d)33b
Regex演示