【发布时间】:2015-06-15 01:32:49
【问题描述】:
所以我想在 java 中将字符串拆分为任何非字母数字字符。
目前我一直是这样的
words= Str.split("\\W+");
但是我想在其中保留撇号(“'”)。是否有任何正则表达式可以保留撇号但踢掉其余的垃圾?谢谢。
【问题讨论】:
所以我想在 java 中将字符串拆分为任何非字母数字字符。
目前我一直是这样的
words= Str.split("\\W+");
但是我想在其中保留撇号(“'”)。是否有任何正则表达式可以保留撇号但踢掉其余的垃圾?谢谢。
【问题讨论】:
words = Str.split("[^\\w']+");
只需将其添加到字符类中。 \W 等价于[^\w],然后您可以将' 添加到。
但请注意,\w 实际上也包含下划线。如果你也想在下划线上拆分,你应该改用[^a-zA-Z0-9']。
【讨论】:
\W,所以我选择保留它。不过,我确实添加了一条注释。
a-zA-Z 仅适用于英文字符。更通用的方法是\p{L}。顺便说一句,为了减少混乱,您应该真正避免使用反斜杠。
对于基本的英文字符,使用
words = Str.split("[^a-zA-Z0-9']+");
如果您想包含带有特殊字符的英文单词(例如 fiancé)或使用非英文字符的语言,请使用
words = Str.split("[^\\p{L}0-9']+");
【讨论】:
split " "是一个字符串,而不是一个字符,尽管它在 HTML 输出中被转换为单个字符。在这种情况下,必须相应地调整正则表达式模式。有关此类实现的示例,请参阅ideone.com/3RbBj5。我希望这能解决您面临的问题。
one、two、three),那么模式需要在其中包含这样的字符串:Str.split("(one|two|three|[^a-zA-Z0-9'])+")