如何编写一个软件,从列表中提取字符串,并根据列表中每一行的模式生成正则表达式?
回答:
正则表达式是规则的,这意味着它们用于匹配明确定义的模式。如果你需要一种模糊匹配,正则表达式是不需要或不适用的。如果你需要一个“查找相似文本”的算法,请忘记正则表达式,使用机器学习算法之一。谷歌搜索“机器学习算法”。
顺便说一句,制作一个能够生成匹配一组字符串的正则表达式的程序并不难,但这只有在为了娱乐或学习目的时才有意义,我无法想象它还有什么其他用途。
例如,你可以得到一个表达式来匹配看起来像电子邮件地址的东西,但你无法真正确定它是否真的是一个电子邮件地址,因为要确定这一点,你需要应用一套严格的规则,这些规则无法从任何小于所有现有电子邮件账户实际数量的真实世界电子邮件地址样本中自动确定。
如果我为了娱乐而做这样的事情,我会首先“提取”长度规则。不短于最短的,不长于最长的。然后将字符集限制为仅存在于该集合中的字符,或者扩展到完整的字母数字。不扩展到特殊字符。对于某些情况它可能会起作用,对于其他情况则会彻底失败。