我需要下面的正則表達式只選擇那些總規模的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