正则表达式删除除句点之外的所有特殊字符

por*_*der 3 regex android kotlin

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

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

我删除了句点并进行了测试。它不起作用。

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

例如,让我们采用字符串“if {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(逗号和感叹号已删除)

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

有人有解决方案吗?

Wik*_*żew 5

您可以使用

"""[\p{P}\p{S}&&[^.]]+""".toRegex()
Run Code Online (Sandbox Code Playgroud)

该模式与除点( ,使用字符类减法)之外的[\p{P}\p{S}&&[^.]]+一个或多个 ( +) 标点符号 ( \p{P}) 或符号 ( ) 字符匹配。\p{S}&&[^.]

查看Kotlin 演示

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