Java 字符串拆分为非字母字符

标签 java regex string split

我想将一个字符串沿非字母字符拆分为一个字符串数组。例如:

"Here is an ex@mple" => "Here", "is", "an" "ex", "mple"

我尝试使用 String.split(String regex)使用正则表达式 "(?![\\p{Alpha}])" 的方法。然而,这会将字符串拆分为

"Here", "_is", "_an", "_ex", "@ample"

(那些下划线是为了强调有一个空格)。我猜这是因为 ?! 正则表达式运算符是“零宽度”的,实际上是拆分和删除输入字符串中非字母字符之前的零宽度字符。

如何在拆分字符串时删除实际的非字母字符?是否存在非零宽度否定运算符?

最佳答案

你可以尝试 \P{Alpha}+:

"Here is an ex@mple".split("\\P{Alpha}+")
["Here", "is", "an", "ex", "mple"]

\P{Alpha} matches any non-alphabetic character (as opposed to \p{Alpha}, which matches any alphabetic character). + indicates that we should split on any continuous string of such characters. For example:

"a!@#$%^&*b".split("\\P{Alpha}+")
["a", "b"]

关于Java 字符串拆分为非字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714549/

相关文章:

java - 如何使用java从一组扫描文档中检测空白图像?

php - 新行 (\n) 在 xampp 中有效吗?

在 Eclipse 中运行 TestNG 测试时出现 java.lang.NoSuchMethodError

java - JDBC bulkcopy 中可能的内存泄漏

javascript - 是否可以更改 vi 正则表达式机器?

ruby - 如何从以下 ruby​​ 正则表达式中删除引号?

python - 使用 datetime.strptime() 时出现问题

c - scanf 没有正确存储输入

java - 如何计算该字符串中每个单词的大小?

java - 如何清理由 Runtime.exec() 启动的进程?