我需要下面的正则表达式只选择那些总规模的X:正则表达式的Java总字符串长度
[[JN]*P?[JN]*]N
编辑:
例如6:
- JJPNNN - > JJPNNN
- ONNJNNNO - > NNJNNN
- NPJNJNN - > NPJNJN,PJNJNN
- NPJNN - >假
我需要它来捕捉组。
我需要下面的正则表达式只选择那些总规模的X:正则表达式的Java总字符串长度
[[JN]*P?[JN]*]N
编辑:
例如6:
我需要它来捕捉组。
您可以使用的大小限制
\{5,10}
类似的东西限制大小为5〜10
你应该看一下就可以了,还有吨关于这个话题
您可以使用lookahead首先检查长度,如下所示:
(?=^.{6}$)[[JN]*P?[JN]*]N
另外,你似乎有太多的括号。为了使表达式匹配您的例子,你需要删除的最外层:
(?=^.{6}$)[JN]*P?[JN]*N
Here是使用ideone一个小的演示。
你可以帮助编辑的要求吗? – 2014-08-29 01:58:45
String test = "123456"
if(test.match("^\w{6,6}$")
{
//True if String has length of 6
}
OP想要一个正则表达式,如果它符合'[JN] * P?[JN] *] N ** **和**长度为6的模式将返回true。不是一个或另一个。 – bcsb1001 2014-08-28 09:04:14
public class Main {
private static boolean match(String line) {
Pattern p = Pattern.compile("^(?=[JNP]{6}$)[JN]*P?[JN]*N$");
Matcher m = p.matcher(line);
return m.matches();
}
public static void main(String[] args) {
System.out.println(match("JJPN"));
System.out.println(match("JJPNNN"));
System.out.println(match("NNJNNN"));
System.out.println(match("NPJNJNN"));
System.out.println(match("NPJNJNNNN"));
}
}
出
false
true
true
false
false
将这项工作? '([[JN] * P?[JN] *] N){6}'? – 2014-08-28 08:54:38
可能的重复[regexp最大长度限制](http://stackoverflow.com/questions/6503177/regexp-maximal-length-restrict) – 2014-08-28 08:56:34
@BuhakeSindi不,它不会。这将重复整个模式6次... – bcsb1001 2014-08-28 09:00:54