获得一个单词前置正则表达式匹配?

时间:2012-09-25 13:32:19

标签: regex

我想评估一个类似于以下内容的表达式:

这是街头蓝色

您可以使用正则表达式确定颜色,如下所示:

即可。? (青色|绿色|红色|蓝色)

到目前为止,如此好,我怎样才能确定导致颜色的物体?也就是说,在这种情况下,我想收回“街道”一词,但它可能是“汽车”,“箭头”或任何其他名词。

简而言之,是否可以构造一个正则表达式,一旦找到特定点(数学),在这种情况下是颜色,你可以得到最后一个单词,它对应于应用颜色的对象,或者是什么同样,正则表达式找到匹配前的单词?

3 个答案:

答案 0 :(得分:2)

以下正则表达式应该有效:

(\w+)\s+(blue|green|cyan)

颜色匹配前的单词将位于捕获组1中。

Java测试:

Pattern p = Pattern.compile("(\\w+)\\s+(blue|green|cyan)");
Matcher matcher = p.matcher("This is the street blue");
if(matcher.find()) {
    System.out.println(matcher.group(1));
}

答案 1 :(得分:0)

使用word boundaries获取颜色前的单词(lookahead):

/\b.+\b(?=\s+(cyan|green|red|blue))/

答案 2 :(得分:0)

这个表达式最符合您的要求,当然需要进一步的数据处理,但它确实很有用。

谢谢大家的意见