java - 仅从字符串中检索给定的单词

标签 java regex string

例如,我正在处理 boolean 查询:

Information mining AND retrieval OR position

我想创建两个数组或列表,一个包含术语(术语可以有大写字母)术语可以有短语查询,即多个单词。

{Information mining, retrieval, position}

第二个数组将包含关键字

{AND, OR}

这样我就可以将相关的搜索词与其 boolean 运算符对应起来。

我使用正则表达式“AND | NOT | OR”创建了第一个数组
我想不出从给定字符串创建第二个数组的方法。

我可以使用什么正则表达式来获得结果?

最佳答案

您可以像这样使用正则表达式:

([A-Z][a-z\s]+)|([A-Z]+)
 ^^^^^^^^^^^^^     ^--- Capture wey words
      +--- Capture regular words

Regex Working demo

Java demo example

如下所示,第 1 组将捕获单词,而第 2 组将捕获关键字。

enter image description here

比赛信息

MATCH 1
1.  [0-11]  `information`
MATCH 2
2.  [12-15] `AND`
MATCH 3
1.  [16-25] `retrieval`
MATCH 4
2.  [26-28] `OR`
MATCH 5
1.  [29-37] `position`

关于java - 仅从字符串中检索给定的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32742252/

相关文章:

java - 如何在ANTL4中执行解析步骤

java - 连接4,检查赢家算法

regex - 如何使正则表达式仅在两个以上的分组匹配时才匹配?

java - 十进制格式,说它需要是一个字符串?

c++ - 什么是 std::safe_string?

java - 如何为具有共享 NFS 安装的 2 个节点设置 Jackrabbit Repository.xml?

java - @RestControllerAdvice 与 @ExceptionHandler 配对不会从数据类返回 JSON

php - 替换 ereg_replace()

java - java RegEx 中的非捕获组

c++ - 使用 strncpy 时出现异常