android java 正则表达式匹配除一个字符外的所有字符

Posted

技术标签:

【中文标题】android java 正则表达式匹配除一个字符外的所有字符【英文标题】:android java regex match all but one character 【发布时间】:2016-12-01 07:36:09 【问题描述】:

我有一个包含姓名、地址等的 CSV 数据库。

现在我将在我的 android 应用程序中搜索一些东西,比如说地址,然后显示与之关联的其他记录 - 姓名、电话...

问题是,在 CSV 中,一些条目缺少字符,而是有空格 - 例如“G rany Dresden”(用空格代替“e”)

不幸的是,数据库经常更新,我无法每次手动更正它。

当我搜索“德国”时,如何匹配“Germany Dresden”、“G rmany Dresden”、“Germa y Dresden”等?

我想不匹配的字符必须有一个限制,所以我们假设不超过两个 - 至少我从未见过更多

【问题讨论】:

您需要更精确地定义要匹配的内容。既然Germa y 适合匹配Germany,那么G 是否也适合匹配?在你的情况下,什么才是最合适的匹配? 最后一次编辑错误 - 查看更新版本 【参考方案1】:

首先想到的是 Levenshtein 距离(除了插入和删除之外,您正在寻找与德国距离为 1 的东西)。您不能直接使用正则表达式来执行此操作,但您可以通过编程方式生成正则表达式。

这里还有另一个可能有用的答案:Levenshtein distance in regular expression

【讨论】:

从来不知道 Levenshtein 距离,谢谢你的信息 :)

以上是关于android java 正则表达式匹配除一个字符外的所有字符的主要内容,如果未能解决你的问题,请参考以下文章

什么正则表达式将匹配除逗号','或分号';'之外的每个字符?

如何用正则表达式过滤除数字以外的其他字符?

正则表达式,匹配除 \r \n 之外的所有内容作为普通字符

正则表达式匹配除 5 之外的所有数字字符

Codeigniter 路由正则表达式 - 匹配除 'admin' 之外的任何字符串

Android 常用正则表达式