当前位置: 首页 > 知识库问答 >
问题:

如何使用Java匹配字符串中的精确匹配

阎懿轩
2023-03-14

我试图检查字符串是否包含完全匹配。例如:
String str="这是我的字符串,具有-Policy和-p"

我怎样才能做到以下几点:

if (str.contains("-p")) {  // Exact match to -p not -policy
System.out.println("This is -p not -policy");

}

共有3个答案

萧焱
2023-03-14

你可以这样试试。

String str = "This is my string that has -policy and -p";
for(String i:str.split(" ")){
   if(i.equals("-p")){ // now you are checking the exact match
     System.out.println("This is -p not -policy");
   }
}
曹焱
2023-03-14

尝试使用:

(?<!\w)\-p(?!\w)

演示

这意味着:

  • <代码>(?

另一种解决办法也可以是:

(?<=\s)\-p(?=\s)

然后必须有空格字符 (' ') 之前和anfter-p

JavaPattern和Matcher类实现:

public class Test {
    public static void main(String[] args) {
        String sample = "This is my string that has -policy and -p";
        Pattern pattern = Pattern.compile("(?<!\\w)\\-p(?!\\w)");
        Matcher matcher = pattern.matcher(sample);
        matcher.find();
        System.out.println(sample.substring(matcher.start(), matcher.end()));
        System.out.println(matcher.group(0));
    }
}
宰父嘉胜
2023-03-14

要区分-p,下面的解决方案很简单。如果我们在前面添加/b,那么“test-p”类型的单词也会匹配。

String source = "This is -p not -policy";
System.out.println("value is " + Pattern.compile(" -p\\b").matcher(source).find());
 类似资料:
  • 我正在尝试创建一个Lucene4.10索引。我只想在索引中保存我放入文档的确切字符串,witout标记化。 我在用StandardAnalyzer。 我试图搜索术语“燃料箱容量”@en(包括引号),所以我试图省略它们,并在术语周围添加了另外几个引号,以便让lucene理解我正在搜索整个文本。 如果我打印查询,我会得到:3:“燃料箱容量en”,但我不想拆分@符号上的文本。 我认为我的第一个问题是St

  • 比如说我有这个: 我想做两件事: 1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试 2)使其成为如果用户键入首先后跟空格和至少一个其他字符串字符,它将打印出——例如:a)不会打印出任何东西,b)(后跟一个空格)不会打印出任何东西,c)不会打印出任何东西,d)不会打印出任何东西,但是e)将打印出, f)将打印出, g)将打印出, and h)将打印出等。 我只知道

  • 问题内容: 我有一个oracle表,该表具有名为system_access的列,该列具有以下数据: 基于上述示例数据,我不确定我的查询仅检索与“只读”和/或“只读”的确切单词匹配的记录 我不需要具有“只读(否)”,后接空格或方括号的记录,或“只读(请参阅mgr)”,其后或接续无空格和括号的记录。 因此,根据以上示例数据,我只会返回两行,即: 如前所述,只有与字符串“ Read Only”或“ re

  • 使用和方法,是否有办法确定我的String是否与类的适当大小写匹配? 例子: 这将错过ClassNotFoundException,并在线程“main”java中抛出这个异常:exception。lang.NoClassDefFoundError:testReFlEction(错误名称:testReFlEction) 错误日志: 更新:我将异常更改为catch。

  • 问题内容: 我正在寻找一个正则表达式来匹配Java源代码中的字符串文字。 可能吗? 我的意图是用其他东西替换另一个字符串中的所有字符串。使用: 这样的事情。 问题答案: 好。那么,您想要在字符串中搜索以双引号开头和结尾的一系列字符吗? 注意非贪婪模式。

  • 我使用elasticsearch查询带有模糊匹配的索引。我使用的是一个最小克长度为3的边缘ngram标记器。 但是,对于仅包含1或2个字符的查询,这不会返回任何结果。是否可以仅对这1个或2个字符进行精确匹配,但对具有3个或更多字符的查询使用边缘非负RAM? 这是我当前的elasticsearch索引映射: 要查询此索引,请求如下: 产生了大量的结果,但是像这样的请求 给出一个空集。理想情况下,如果