我想评估一个类似于以下内容的表达式:
这是街头蓝色
您可以使用正则表达式确定颜色,如下所示:
即可。? (青色|绿色|红色|蓝色)
到目前为止,如此好,我怎样才能确定导致颜色的物体?也就是说,在这种情况下,我想收回“街道”一词,但它可能是“汽车”,“箭头”或任何其他名词。
简而言之,是否可以构造一个正则表达式,一旦找到特定点(数学),在这种情况下是颜色,你可以得到最后一个单词,它对应于应用颜色的对象,或者是什么同样,正则表达式找到匹配前的单词?
答案 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)
这个表达式最符合您的要求,当然需要进一步的数据处理,但它确实很有用。
谢谢大家的意见