2012-04-03 284 views
0

我盡力配合與Java正則表達式並不能找到合適的正則表達式正則表達式匹配base64編碼

我想匹配=?UTF-8?B'XXXXXXXX =?=在

= UTF-的8B UmVtaW5kZXI = =

我想:???

s.matches("=\\?utf\\-8\\?B\\?.*=\\?="); 
s.matches("=\\?utf-8\\?B\\?.*=\\?="); 
+0

如果單曲'是整個主題,你需要使用'contains()'而不是'matches()'。 – rsp 2012-04-03 19:48:22

回答

3

你確定嗎?您使用的是哪個版本的Java?

我做了一個基本的測試與您的情況和它的作品...

public static void main(String[] args) { 

    String input = "=?utf-8?B?UmVtaW5kZXI=?="; 
    String input2 = "irege"; 

    String regex = "=\\?utf\\-8\\?B\\?.*=\\?="; 

    System.out.println(input.matches(regex)); 
    System.out.println(input2.matches(regex)); 

} 

控制檯輸出:

true 
false 
+0

在jdk上運行1.7 – 2012-04-03 19:02:25

+0

我已經用java 1.6.0_22和java 1.7.0_03測試過,結果是一樣的 – MrJames 2012-04-03 19:12:53

+0

我重新測試過,因爲輸入變量是「mask」值而不是原始輸入,但結果是一樣的 – MrJames 2012-04-03 19:45:45

0

該做的:

"=\\?utf-8\\?B\\?[^=]*=\\?="