android - 正则表达式删除除句点以外的所有特殊字符
问题描述
我需要帮助创建一个删除所有特殊字符的正则表达式,包括逗号,但不包括句点。我试图做的是转义所有我不想要的字符、符号和标点符号。它没有按预期工作。
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
(去掉了逗号和感叹号)
注意:我想保留括号,尽管可以省略括号。
有人对此有解决方案吗?
解决方案
您可以使用
"""[\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.
推荐阅读
- xcode - 为什么我的故事板segues纵横交错?
- python-3.x - 如何使用 matplotlib.pyplot 在条形图和数据表之间创建空间?
- android - 安全区的空间可以被任何东西填满吗?
- python - Pyspark SQL 选择列为 NaN 的数据
- c++ - “无法将 'T [S]' 与 'std::vector 匹配
'" 对于某些函数,但不是其他具有相同参数列表的函数 - python - NetworkX DiGraphMatcher 在有向图上不返回结果?
- java - EntityManagerFactory spring boot 太慢了
- java - 在服务器中存储价值 - Java Spring Boot
- c - llvm:文件格式无法识别;视为链接描述文件
- c# - 如何在 ASP.Net 中使用 let 子句