【发布时间】:2013-05-11 14:21:28
【问题描述】:
我有两个字符串 a 和 b。我想要一个正则表达式模式,这样它将 b 的最长子字符串与 a 开头的 a 匹配。
例如,
a = "aaaabaaa"
b = "aaazb"
answer_i_need = "aaa"
示例 2,
a = "aaaabaaa"
b = "aaaa"
answer_i_need = "aaaa"
示例 2,
a = "aaaabaaa"
b = "baaa"
answer_i_need = ""
我知道查找 b 的所有子字符串并检查它是否与 a 匹配的选项,但是由于字符串非常长并且我使用的是 Python,所以它会花费太长时间。 老实说,我不确定这是否可能,无论如何,如果我能找到这样的解决方案,我将非常感激。
编辑:在 this question 中,OP 需要一个优雅的答案,而我正在处理非常长的字符串(几乎 100,000 个字符),所以我想知道最有效的答案。
【问题讨论】:
-
对不起,我没有遇到这个问题,让我看一下并回复..
-
@DSM 老实说,我没有在该链接中找到我想要的答案,因为 OP 需要一个优雅的答案,而我需要一个高效的答案。因此,大多数发布的答案都不清楚它们的效率。
-
@coding_pleasures 所以看看这些答案,然后自己测试一下,看看哪个在你的数据上最快。如果我们都为您测试,我们可能会在不同的情况下得到不同的结果。
-
@DSM 你的答案 os.path.commonprefix() 非常适合我的需要。
-
使用
os.path.commonprefix()的好主意,我不知道它的存在。但是,根据我对长度为 1000 and 4720`000 的两个字符串的测试,commonprefix()的执行时间比我的解决方案多 15% 左右。我想您说它满足您的需求是出于效率以外的其他原因。