Java 仅从字符串中检索给定的单词
我正在处理布尔查询,例如:Java 仅从字符串中检索给定的单词,java,regex,string,Java,Regex,String,我正在处理布尔查询,例如: Information mining AND retrieval OR position 我想创建两个数组或列表,其中一个包含术语(术语可以有大写字母),术语可以有短语查询,即多个单词 {Information mining, retrieval, position} 第二个数组将包含关键字 {AND, OR} 所以我可以用它们的布尔运算符映射相关的搜索词 我使用regex“AND | NOT | OR” 我想不出从给定字符串创建第二个数组的方法 我可以使用什么
Information mining AND retrieval OR position
我想创建两个数组或列表,其中一个包含术语(术语可以有大写字母),术语可以有短语查询,即多个单词
{Information mining, retrieval, position}
第二个数组将包含关键字
{AND, OR}
所以我可以用它们的布尔运算符映射相关的搜索词
我使用regex“AND | NOT | OR”我想不出从给定字符串创建第二个数组的方法
我可以使用什么正则表达式来获得结果?您可以使用如下正则表达式:
([A-Z][a-z\s]+)|([A-Z]+)
^^^^^^^^^^^^^ ^--- Capture wey words
+--- Capture regular words
正如您在下面看到的,您的组1将捕获单词,而组2将捕获关键字
匹配信息
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`
使用
Matcher#find
代替拆分。阅读@Pshemo,我查找了它,它只返回布尔值。我需要一个数组。有没有一种方法可以使用Matcher类获取数组?请看一看,尤其是这一部分,以了解如何使用Matcher查看已创建的部分。问题是术语也可以有大写字母,例如“信息、检索和位置”。对不起,如果不清楚的话。我将更新我的问题。@xool您可以使用这个正则表达式,然后([A-Z]?[A-Z]+)|([A-Z]+)
忘记提到术语也可以有短语查询,即多个单词。这就是为什么我不能使用简单的空格分隔符的原因。太完美了!非常感谢。