public static boolean isPrime(int n) {
return !new String(new char[n]).matches(".?|(..+?)\\1+");
}
https://stackoverflow.com/posts/4515687/revisions
这是做什么的?
".?|(..+?)\\1+"
是否等于".?"
?
(我在这个网站上练习正则表达式http://regex101.com/r/jL7qD4)
答案 0 :(得分:0)
好的,让我们分解一下:
.?
可选地匹配任何单个字符。所以这个语句将匹配空字符串或任何单个字符。
a|b
是不同的选项 - 它与a
或b
匹配。
最后一个条款(..+?)\\1+
执行以下操作:
.
匹配任何单个字符。
.+?
非贪婪地匹配一个或多个字符。
\\1+
匹配捕获组的内容(括号中的位)一次或多次。
所以,简单地说,不,.?|(..+?)\\1+
与.?
不一样,而是一个超集(它将匹配所有.?
将会更多)。< / p>