首页 > 解决方案 > 正则表达式删除除句点以外的所有特殊字符

问题描述

我需要帮助创建一个删除所有特殊字符的正则表达式,包括逗号,但不包括句点。我试图做的是转义所有我不想要的字符、符号和标点符号。它没有按预期工作。

replace("[-\\[\\]^/,'*:.!><~@#\$%+=?|\"\\\\()]+".toRegex(), "")

我删除了句号并对其进行了测试。那没起效。

replace("[-\\[\\]^/,'*:!><~@#\$%+=?|\"\\\\()]+".toRegex(), "")

例如,让我们使用字符串“如果 {cat.is} in a hat, then I eat green eggs and ham!”。

我要结果

if {cat.is} in a hat then I eat green eggs and ham(去掉了逗号和感叹号)

注意:我想保留括号,尽管可以省略括号。

有人对此有解决方案吗?

标签: androidregexkotlin

解决方案


您可以使用

"""[\p{P}\p{S}&&[^.]]+""".toRegex()

[\p{P}\p{S}&&[^.]]+模式匹配一​​个或多个 ( +) 标点符号 ( \p{P}) 或符号 ( \p{S}) 字符而不是点 ( &&[^.],使用字符类减法)。

查看Kotlin 演示

println("a-b)h.".replace("""[\p{P}\p{S}&&[^.]]+""".toRegex(), ""))
// => abh.

推荐阅读