2011-02-24 88 views
1

我的輸入字符串格式可以是TIM0.VW0(它始終以TIM或CNT或ENC開頭,後面跟着數字,然後始終指向末尾的char或帶有數字的字符)。如何找出我的輸入字符串是否與正則表達式匹配?REGEX匹配問題

回答

0

你可以試試這個正則表達式:(TIM|CNT|ENC)\d+\.\w+\d

1

匹配它:

^(TIM|CNT|ENC)[0-9]+\.[A-Z]+[0-9]$ 
+0

如果使用'String.matches'你不需要'^'和$''。 – aioobe 2011-02-24 08:48:59

+0

@aioobe - 這就是爲什麼你有我的投票 - 你有一個工作的Java示例。 – Kobi 2011-02-24 08:50:12

4

像這樣的事情可以做:

import java.util.Arrays; 

public class Test { 
    public static void main(String[] args) { 

     String regexp = "(TIM|CNT|ENC)\\d+\\.\\p{Alpha}+\\d"; 

     for (String test : Arrays.asList("TIM0.VW0", "TIM0.VW5", "TIM0.0", 
             "TIM99.A5", "CNT0VW0", "ABC0.VW0", 
             "-TIM0.VW0", "TIM9.8x", "ENC0.55")) 
      System.out.printf("%-10s: %s%n", test, test.matches(regexp)); 
    } 
} 

輸出:

TIM0.VW0 : true 
TIM0.VW5 : true 
TIM0.0 : false 
TIM99.A5 : true 
CNT0VW0 : false 
ABC0.VW0 : false 
-TIM0.VW0 : false 
TIM9.8x : false 
ENC0.55 : false 
+0

如果點之後的字符總是大寫,則可能需要使用\ p {Upper}(或[A-Z])而不是\ p {Alpha}。 – 2011-02-24 08:55:48

+0

是的。好點子。 – aioobe 2011-02-24 09:13:03

0

你應該合作使用這個:

^(TIM|ENC|CNT)\d+\.\w+\d+$