什么是正则表达式。和..?
if(key.matches(".")) {
do something
}
匹配接受要求正则表达式的String。现在我需要删除MAP中的所有DOT。
答案 0 :(得分:69)
。匹配任何字符,因此需要转义,即Java字符串中的\.
或\\.
(因为\
本身在Java字符串中具有特殊含义。)
然后,您可以使用\.\.
或\.{2}
来匹配2个点。
答案 1 :(得分:9)
...
[.]{1}
或
[.]{2}
答案 2 :(得分:4)
[+ *?。]大多数特殊字符在方括号内没有任何意义。这个表达式匹配+,*,?或点。
答案 3 :(得分:3)
如果您只想替换字符串中的点,请使用String.Replace()
。另一种方法是将Pattern-Matcher
与StringBuilder
一起使用,这样可以提供更大的灵活性,因为您可以找到点之间的组。如果使用后者,我建议您使用"\\.+"
忽略空条目。
public static int count(String str, String regex) {
int i = 0;
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
m.group();
i++;
}
return i;
}
public static void main(String[] args) {
int i = 0, j = 0, k = 0;
String str = "-.-..-...-.-.--..-k....k...k..k.k-.-";
// this will just remove dots
System.out.println(str.replaceAll("\\.", ""));
// this will just remove sequences of ".." dots
System.out.println(str.replaceAll("\\.{2}", ""));
// this will just remove sequences of dots, and gets
// multiple of dots as 1
System.out.println(str.replaceAll("\\.+", ""));
/* for this to be more obvious, consider following */
System.out.println(count(str, "\\."));
System.out.println(count(str, "\\.{2}"));
System.out.println(count(str, "\\.+"));
}
输出将是:
--------kkkkk--
-.--.-.-.---kk.kk.k-.-
--------kkkkk--
21
7
11
答案 4 :(得分:1)
您应该使用包含不匹配
if(nom.contains("."))
System.out.println("OK");
else
System.out.println("Bad");