【问题标题】:java regex expression, everything other than letter characters/stringsjava 正则表达式,除字母字符/字符串以外的所有内容
【发布时间】:2013-11-17 00:00:41
【问题描述】:

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

【问题讨论】:

  • 您能否提供您的数据示例以及您的尝试?
  • 我想要“bensherms!bensherms?bensherms:bensherms”返回数组:[bensherms,bensherms,bensherms,bensherms]

标签: java regex hash hashtable


【解决方案1】:

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

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)

【讨论】:

  • 现在看,我怎么能用_作为分隔符?
  • 给我一个你的数据的例子。
【解决方案2】:

Pattern API 包含许多有用的predefined character classes,它们为常用的正则表达式提供了方便的速记:对于这种情况,\\w 表示单词字符:[a-zA-Z_0-9]\\s 表示空格字符:@ 987654326@。你可能在他们之后。

例如,要围绕空白进行分割,您需要使用\\s+,其中表达式X+ 表示X 至少出现一次或多次。这种表达方式被称为quantifiers

【讨论】:

  • 什么是空白字符?
猜你喜欢
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多