我正在尝试检查字符串是否包含完全匹配。
例如:
String str =“这是我的字符串,其中包含-policy和-p”
如何执行以下操作:
if (str.contains("-p")) { // Exact match to -p not -policy
System.out.println("This is -p not -policy");
}
答案 0 :(得分:2)
为了区分-p,下面的解决方案很简单。如果我们在前面添加/ b,那么“test-p”类型的单词也将匹配。
String source = "This is -p not -policy";
System.out.println("value is " + Pattern.compile(" -p\\b").matcher(source).find());
答案 1 :(得分:1)
尝试:
(?<!\w)\-p(?!\w)
这意味着:
(?<!\w)
负向后看
如果它前面会有&amp; *%^%^它将会匹配,\-p
- -p (?!\w)
否定前瞻,如
上述另一种解决方案也可能是:
(?<=\s)\-p(?=\s)
然后在-p
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));
}
}
答案 2 :(得分:0)
你可以这样试试。
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");
}
}