2024-04-29 19:40:51 发布
网友
我有一个电话号码的数据集,我想互相核对一下。基本上,如果两个电话号码最多相差1位,regex应该抛出一个匹配。例如,我们有以下电话号码:
这些数字是相同的,除了位置数字7(第一个数字有一个3,而第二个数字有一个2)。由于这些电话号码相差1位数,正则表达式应该抛出一个匹配。如果电话号码完全相同,正则表达式也应该抛出一个匹配。在以下情况下(见下文),正则表达式不应抛出匹配,因为电话号码相差超过1位数:
有人在想一个好的正则表达式吗?我正在用python中的re模块编写regex。你知道吗
根据您的用例-如果您还想捕获“哦,您错过了一个数字”或“呃,那个数字不应该在那里”,请使用两个数字之间的编辑距离。你知道吗
您可以使用levenshtein编辑距离来获取两个数字之间需要多少“编辑”的数字,例如使用python的editdistance库。你知道吗
>>> import editdistance >>> editdistance.eval('banana', 'bahama') 2L
这可能不是最好的代码,但它可以做到这一点。你知道吗
from collections import Counter a = '+31612345678' b = '+31612245678' def match(p1, p2): ct = Counter([a == b for a, b in zip(p1, p2)]) if not ct[False] > 1: <throw match>
你不会用正则表达式来表达这个。如果你的电话号码长度相同
def is_match(phone_nr_1, phone_nr_2): diff = filter(lambda x: x[0] != x[1], zip(phone_nr_1, phone_nr_2)) return len(diff) <= 1 print is_match("+31612345678", "+31612245678") #=> True print is_match("+31612345678", "+31611145678") #=> False
我会做的。你知道吗
根据您的用例-如果您还想捕获“哦,您错过了一个数字”或“呃,那个数字不应该在那里”,请使用两个数字之间的编辑距离。你知道吗
您可以使用levenshtein编辑距离来获取两个数字之间需要多少“编辑”的数字,例如使用python的editdistance库。你知道吗
这可能不是最好的代码,但它可以做到这一点。你知道吗
你不会用正则表达式来表达这个。如果你的电话号码长度相同
我会做的。你知道吗
相关问题 更多 >
编程相关推荐