簡體   English   中英

正則表達式模式不匹配任何內容

[英]regex pattern won't match anything

我希望我的mPattern在搜索字符串中至少匹配FFF1FFF3字符串4次。 我已經寫了兩個模式版本,但是都沒有匹配。

Pattern mPattern = Pattern.compile("(FFF1|FFF3){4,}");

VER2:

Pattern mPattern = Pattern.compile("(FFF1{4,}|FFF3{4,})");

搜索字符串為(示例):

0DCB1C992B37173740244875C143D50ACDBA0422CD01D73D3C78F05ED7BBC2B33F9D78A7FFF342C0241C6B56B11EC1867984C20F42A4FAC5B9C0
42220314C006D94E124673CD4CC27FC2FCE12215410F12086BE5A3EDFC6DB2BEB0EAEC6EAAA4BF997FFB3337F914AB1A89C808EA6D338912D72E
99CE11E899999D3AE1092590FB2B71D736DC544B0AFD1035A3FFF340C00E178B62E5BE48C46F04B8EFC106AE3F17DDE08B5FD48672EBEABB216A
8438B6FB3B33BF91D3F3EBFCE14184320532ABA37FFD59BFF6ABAD1AA9AADEE73220679D2C7DDBAB766433A99D8CA752B383067465691750A24A
00F32A5078E29258F6D87A620AFFF342C00A158B22E5BE5944BAE8BA2C54739BE486B719A76DF5FD984D5257DBEAC43B238598EFAB3592DE8DD5

模式"(FFF1|FFF3){4,}"將匹配相鄰的FFF1FFF3 ,重復次數為4或更大。 我猜在多次出現之間可以有任何字符。 在這種情況下,請使用以下正則表達式:

"^(?:.*?(FFF1|FFF3)){4,}.*$"

.*? 匹配任何字符,直到下一個FFF1FFF3 ,然后匹配FFF1|FFF3 重復此序列4次或更多次(應用於整個非捕獲組)。

您可以直接通過String#matches(String)方法使用上述模式。 或者,如果要構建PatternMatcher對象,則只需將以下模式與Matcher#find()方法一起使用:

"(?:.*?(FFF1|FFF3)){4,}"

工作代碼:

String str = "...";  // initialize

Pattern mPattern = Pattern.compile("(?x)" +  // Ignore whitespace
                        "(?:            " +  // Non-capturing group
                        "   .*?         " +    // 0 or more repetition of any character
                        "   (FFF1|FFF3) " +    // FFF1 or FFF3
                        "){4,}          "    // Group close. Match group 4 or more times
                                  );  

Matcher matcher = mPattern.matcher(str);        
System.out.println(matcher.find()); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM