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 正则表达式匹配除一个字符外的所有字符的主要内容,如果未能解决你的问题,请参考以下文章
什么正则表达式将匹配除逗号','或分号';'之外的每个字符?