带有正则表达式的 Java String.split()

标签 java regex string parsing split

我有一个解析问题。 我有存储为字符串的句子。我想捕获每个句子中的每个单词,但是我想过滤我捕获的单词。例如说我有一个像下面这样的句子:

Hell0 3v3ryb0dy @ stackoverflow $people \implies queen$ equals ~queen --> ~people. /#logic

我会做以下事情:

  1. 捕获“H3ll0”
  2. 捕获 3v3ryb0dy
  3. 丢掉@
  4. 从“$people”中获取“people”
  5. 从 '\implies' 中获取 'implies'
  6. 从'queen$'中获取'queen'
  7. 捕获“等于”
  8. 从'~queen'中获取'queen'
  9. 扔掉 -->
  10. 从“~people”中抓取“people”
  11. 从“/#logic”中获取“逻辑”

基本上我只需要字母数字字符,每当我在单词前后有一些其他字符(例如\)时,我想忽略这个其他字符。

目前我在做:sentence.split("")

这会从句子中获取单个单词,但它会获取“$people”和“~people”,并在我希望它们受到相同对待时以不同方式对待它们。

  1. 我怎样才能做到这一点?
  2. 正则表达式对我有帮助吗?

最佳答案

使用此正则表达式 \\W+ 拆分字符串,在一个或多个非单词字符处拆分。

String sentence = "Hell0 3v3ryb0dy @ stackoverflow $people \\implies queen$ equals ~queen --> ~people. /#logic";
String[] split = sentence.split("\\W+");
System.out.println(Arrays.asList(split));

输出

[Hell0, 3v3ryb0dy, stackoverflow, people, implies, queen, equals, queen, people, logic]

关于带有正则表达式的 Java String.split(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225175/

相关文章:

c# - 如何删除字符串中的前两个和最后两个字符?

java - iText 中的 setRowspan 不起作用

java - 使用 JNDI 连接到 AD - 为什么必须以用户名@域的格式提供安全主体?

即使没有匹配项,Mysql REGEXP 也会返回 true。

python - 从最多 6 位数字的字符串中提取数值,可选 2 位小数

javascript - 如何使用正则表达式选择字符串中每个单词的首字母

Java 错误值可能已被分配

java - 如何以编程方式(java)更新keycloak的用户详细信息,而不使用rest admin api?

php - 优化包含正则表达式的查询以进行排序

java - 访问字符串中的单个字母/数字中的数字 - Java