網頁

2017/9/19

Regex 星號 * 與加號 + 的用法

在正規表示式中可使用星號*來表示前面的字符可以出現0次或多次,也就是*前面緊接的那個字符有出現多次或沒出現也是匹配。

例如下面的regex^yahoo*$的最後一個o可以不出現,或出現一次,或出現多次。

String regex = "^yahoo*$";

Pattern p = Pattern.compile(regex);
System.out.println(p.matcher("yaho").find());     // true
System.out.println(p.matcher("yahoo").find());    // true
System.out.println(p.matcher("yahooooo").find()); // true
System.out.println(p.matcher("yahoo!").find());   // false,因為regex有結束符號$,必須以o結尾

與星號*類似的是加號+,差別在於+是前面的字符必須出現一次或多次。

下面範例把上面的星號*改為加號+,所以^yahoo+$的最後一個o至少要出現一次才會匹配。

String regex = "^yahoo+$";
Pattern p = Pattern.compile(regex);
System.out.println(p.matcher("yaho").find());     // false
System.out.println(p.matcher("yahoo").find());    // true
System.out.println(p.matcher("yahooooo").find()); // true
System.out.println(p.matcher("yahoo!").find());   // false

問號?,星號*與加號+統稱為quantifiers或repetition operator。

沒有留言:

張貼留言