我有一个简单的正则表达式,它搜索一个句子,看它是否包含| for | in | at的单词,这里是我的正则表达式几乎在regexpal中工作:
[^ A-ZA-Z]的|为|在|于[^ A-ZA-Z]
我按以下方式运行:
show me the weather of seattle
show me the weather in seattle
show me the weather for seattle
show me the weather at seattle
以下是结果:
当我在我的Java代码中使用它时它根本不起作用。在regexpal中也显示了for和我在开始和结束时定义的空间。有人可以告诉我的正则表达式有什么问题,以及如何搜索句子中的许多单词之一
我总是在我的java中得到其他条件,这意味着它不匹配正则表达式。这是我的java代码:
public class Regex
{
public static void main(String[] args)
{
String str = "show me the weather in seattle";
if(str.matches("[^A-Za-z]of|for|in|at[^A-Za-z]")){
System.out.println("Yayyy!!");
}
else{
System.out.println("OMG now what to do");
}
}
}
答案 0 :(得分:1)
[^A-Za-z](?:of|for|in|at)[^A-Za-z]
您想要对“或”匹配进行分组,否则它会认为您的意思是:
[^A-Za-z]of OR for OR in OR at[^A-Za-z]
很可能不是你想要的。
答案 1 :(得分:1)
这不起作用.*[^A-Za-z](of|for|in|at)[^A-Za-z].*
吗?当然,你需要额外检查边界情况,其中| for | in | at是单词的开头或结尾。