为什么我的正则表达式找不到我模式的所有实例

时间:2019-09-28 08:20:33

标签: java regex

我正在尝试查找所有出现的“ .-”。在此字符串“ -.-.-.-”中,因此我希望输出为2,而不是1。

如果我在此字符串“ -.-.......--”“上进行搜索,则我希望得到2,而我得到的确是2。因此在我看来,该搜索无法识别单个”。 -。”当它们彼此相邻分组时。我该如何解决?

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
    public static void find() {
        int count = 0;
        Pattern p = Pattern.compile("\\.-\\.");
        Matcher m = p.matcher("-.-.-.-");
        while (m.find()) {
            count++;    
        }
        System.out.println(count);
    }

    public static void main(String[] args) {
        find();
    }

}

2 个答案:

答案 0 :(得分:0)

以上逻辑的解决方法是

String p = ".-.";
String s = "-.-.-.-";
int count = 0;
for (int index = s.indexOf(pa);
    index >= 0;
    index = s.indexOf(pa, index + 1)){
         count++;
}

答案 1 :(得分:0)

修正了尼克和泡泡泡泡提出的前瞻性

Pattern p = Pattern.compile("\\.-(?=\\.)");