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

2024-01-01

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

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

我尝试使用String.split(字符串正则表达式) http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split%28java.lang.String%29使用正则表达式的方法"(?![\\p{Alpha}])"。然而,这将字符串分割成

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

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

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


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

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


["Here", "is", "an", "ex", "mple"]
  

\P{Alpha}匹配任何非字母字符(而不是\p{Alpha},它匹配任何字母字符)。+表示我们应该分割此类字符的任何连续字符串。例如:

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


["a", "b"]
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 字符串按非字母字符拆分 的相关文章

随机推荐