我正在写一个hashTable程序。我只需要散列单词或单个字符的值。我将单词定义为没有空格或标点符号的任何字符,并且字符是任何字母(a-z)或(0-9)。这意味着没有空格,换行符,缩进等。我也将所有被散列为小写的文本。我正在使用string.split方法,尽管正确的正则表达式是什么?我读过一些网站,但仍然感到困惑。
-谢谢

最佳答案

请尝试以下操作,因为您似乎正在尝试完成此操作。

String s = "bensherms_!' bensherms?_ bensherms;$#!bensherms";
String[] parts = s.split("(?<!\\W)[\\W_]+");
System.out.println(Arrays.toString(parts));


live demo

输出量

[bensherms, bensherms, bensherms, bensherms]


正则表达式:

(?<!           look behind to see if there is not:
 \W            any character of: non-word characters
               (all but a-z, A-Z, 0-9, _)
)              end of look-behind
[\W_]+         any character of: non-word characters
               (all but a-z, A-Z, 0-9, _), '_' (1 or more times)

关于java - Java正则表达式,除字母字符/字符串外的所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20025487/

10-10 16:05