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

标签 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();
    }

}

最佳答案

上述逻辑的解决方法是

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

关于java - 为什么我的正则表达式找不到我的模式的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58144581/

相关文章:

java - Hibernate:org.hibernate.LazyInitializationException:无法初始化代理 - 无 session

python - 查找以特定符号开头,然后连续出现特定单词和模式的多个匹配项

regex - 字母数字和下划线的正则表达式

java - ObjectInputStream 不会从输出流中读取所有对象

java - 我们如何创建 n 个不同引用的节点?

java - 未封闭字 rune 字背后的算法

python - 匹配 PEP440 兼容版本字符串的正则表达式

regex - 如何从字符串中删除第一个和最后一个破折号?

javascript - 有没有人有一个函数可以将转义字符添加到纯文本字符串中,以便可以在javascript的正则表达式中将其逐字对待?

java - java中清理/删除未使用的 map 元素的策略