检查数字 n 是否在字符串中出现 n 次且连续出现。
例如: 字符串 x =“33322” 情况 1:如果 int N = 3;
检查“33322”中3是否连续出现3次。
这里 3 在“33322”中连续出现 3 次。因此,我们返回 true。
情况 2:如果 int N = 2;
检查“33322”中2是否连续出现2次。
这里 2 在“33322”中连续出现了 2 次。因此,我们返回 true。
我尝试过各种正则表达式,但可能是因为不是很彻底,我不清楚什么表达式可以帮助我完成这项任务。我尝试过给定的正则表达式模式 : "^["+N+"]{"+(N-1)+"}("+N+")$"。
但是对于这个输出是假的,而它应该是真的,因为你可以看到数字 3 在上面的例子中明显出现了 3 次。
在这里,我正在寻找一个可以与 N 的所有可能值匹配的正则表达式。
N 可以是 2-500
最佳答案
使用正则表达式.*(N){N}.*
当使用matches
时String
的方法类或 (N){N}
使用 find
时的正则表达式方法Matcher
。 N 是您要查找的数字。
编辑:添加了一个 Java 示例:
public static void main(String[] args) {
String s = "abc10101010101010101010xyz";
System.out.println(checkOccurrence(s, 10)); // true
s = "abc33322xyz";
System.out.println(checkOccurrence(s, 3)); // true
System.out.println(checkOccurrence(s, 2)); // true
}
private static boolean checkOccurrence(String text, int number) {
Pattern p = Pattern.compile("(" + number + "){" + number + "}");
Matcher m = p.matcher(text);
return m.find();
}
关于java - 出现检查的正则表达式问题 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58467757/