Java正则表达式-检查是否包含单词
我有一个声明(st1): 还有另一个语句(st2),我想检查它是否“包含”“cat”和“n#1” 我尝试通过以下方式进行模式检查:Java正则表达式-检查是否包含单词,java,regex,Java,Regex,我有一个声明(st1): 还有另一个语句(st2),我想检查它是否“包含”“cat”和“n#1” 我尝试通过以下方式进行模式检查: if(Pattern.compile(Pattern.quote(st1), Pattern.CASE_INSENSITIVE).matcher(st2).find()) 当cat#n#1时,它在这些情况下起作用。但是如果这个句子是dog,fish,cat#n#1,那么它就不起作用了。我猜是因为这个句子和st1不完全一样 我已经用String.contains()
if(Pattern.compile(Pattern.quote(st1), Pattern.CASE_INSENSITIVE).matcher(st2).find())
当cat#n#1时,它在这些情况下起作用。但是如果这个句子是dog,fish,cat#n#1,那么它就不起作用了。我猜是因为这个句子和st1不完全一样
我已经用String.contains()、String.matches()、String.equals()和Pattern方法进行了大量的正则表达式读取和实验,但我无法让它按我所希望的方式工作
例如a
if(st2.toLowerCase().contains("cat") && st2.toLowerCase().contains("n#1"))
如果正确答案超过1,则返回true。这些错误答案可能是,例如:
dog, fish, bird, eagle, cat, thing#n#4
所以我希望这里能有一点澄清,谢谢:)
编辑:
我需要在开始或结束时添加有关何时完成检查的详细信息。所以我需要找到那个解决方案,然后再试一次,谢谢:)
st2.toLowerCase().contains(n#1)
应该是st2.toLowerCase().contains(“n#1”)
st2.toLowerCase().contains(“cat”)和&st2.toLowerCase().contains(“n#1”)
,如果这不仅仅是您的打字错误。我也这么认为。但如果这种说法在不止一种情况下是正确的,那就不应该是这样。如果((st2.matches((?i.*)(“cat”))和&st2.matches((?i.*)(“n#1”)*)也给我一个以上的匹配。我通常在这个if语句中有变量,这就是为什么会有一些折叠的东西。不确定最后一个例子中的n#4怎么可能与n#1匹配?我研究了它,我的程序运行一个循环来检查基于用户输入的不同单词。所以我检查的变量可以包含“as”、“cat”、“dog”、“walk”、“a”等词。具体来说,“a”这个词给我带来了麻烦,因为它被用在一个词里面,或者用来定义它是不是一个形容词之类的东西。。所以我需要更好的入住登记首先检查单词的开头(在“#”)和结尾的检查!
if(st2.toLowerCase().contains("cat") && st2.toLowerCase().contains("n#1"))
dog, fish, bird, eagle, cat, thing#n#4