我如何找到仅因变音符号而有所不同的字符串?

时间:2015-03-18 01:53:30

标签: regex diacritics

我正在比较三种词汇资源。我使用其中一个条目来创建查询 - 请参阅第一列 - 并查看其他两个词典是否返回正确的答案。所有错误的答案都写入文本文件。这是3000行中的一个样本:

réincarcérer<IND><FUT><REL><SG><1>  réincarcèrerais réincarcérerais réincarcérerais
réinsérer<IND><FUT><ABS><PL><1> réinsèrerons    réinsérerons    réinsérerons
macérer<IND><FUT><ABS><PL><3>   macèreront  macéreront  macéreront
répéter<IND><FUT><ABS><PL><1>   répèterons  répéterons  répéterons

第一列是查询,第二列是引用。第三列和第四列是词典返回的结果。这些值以制表符分隔。

我正在尝试找出仅与其变音符号不同的答案。也就是说,répèterons répéterons应该匹配,因为两者之间的唯一区别是第二部分在e上具有强调重音而不是严重重音。

我想匹配整条线。我要感谢一个正则表达式,它还可以找出因其发布而不同的答案 - 以下两行应该匹配,因为martellerait有两个l,而martèlerait只有一个。{ / p>

modeler<IND><FUT><ABS><SG><2>   modelleras  modèleras   modèleras
marteler<IND><FUT><REL><SG><3>  martellerait    martèlerait martèlerait

最后两个值始终相同。您可以专注于值#2和3。

1 个答案:

答案 0 :(得分:1)

第一部分可以通过对ASCII进行有损转换然后进行直接字符串比较来实现。注意,转换为ASCII有效地消除了变音符号。

要使用正则表达式模式,第二部分是不可能的(据我所知)。您需要对Levenshtein距离等事项进行一些研究。

编辑:

此正则表达式将匹配重复的辅音。它可能对您的发送问题有所帮助。

([b-df-hj-np-tv-xz])\\1+

这意味着:

([b-df-hj-np-tv-xz])  # Match only consonants
\\1+                  # Match one or times again what was captured in the first capture group