import org.junit.Test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest { @Test public void test(){ String line = "This order was placed for QT3000! OK?"; String pattern = "\\d+"; // Create a Pattern object Pattern r = Pattern.compile(pattern); // Now create matcher object. Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group() ); } else { System.out.println("NO MATCH"); } } }
其中\d+是匹配1個或者更多個數字。
最后輸出結果為:3000
附上一張正則表達式元字符語法:
| 子表達式 | 匹配對應 |
|---|---|
| ^ | 匹配一行的開頭 |
| $ | 匹配一行的結尾 |
| . | 匹配除了換行符的任何單個字符,也可以利用 m 選項允許它匹配換行符 |
| [...] | 匹配括號內的任意單個字符。 |
| [^...] | 匹配不在括號內的任意單個字符。 |
| \A | 整個字符串的開始 |
| \z | 整個字符串的結束 |
| \Z | 整個字符串的結束,除了最后一行的結束符 |
| re* | 匹配0或者更多的前表達事件 |
| re+ | 匹配1個或更多的之前的事件 |
| re? | 匹配0或者1件前表達事件 |
| re{ n} | 匹配特定的n個前表達事件 |
| re{ n,} | 匹配n或者更多的前表達事件 |
| re{ n, m} | 匹配至少n最多m件前表達事件 |
| a| b | 匹配a或者b |
| (re) | 正則表達式組匹配文本記憶 |
| (?: re) | 沒有匹配文本記憶的正則表達式組 |
| (?> re) | 匹配無回溯的獨立的模式 |
| \w | 匹配單詞字符 |
| \W | 匹配非單詞字符 |
| \s | 匹配空格。等價於 [\t\n\r\f] |
| \S | 匹配非空格 |
| \d | 匹配數字. 等價於 [0-9] |
| \D | 匹配非數字 |
| \A | 匹配字符串的開始 |
| \Z | 匹配字符串的末尾,如果存在新的一行,則匹配新的一行之前 |
| \z | 匹配字符串的末尾 |
| \G | 匹配上一次匹配結束的地方 |
| \n | 返回參考捕獲組號“N” |
| \b | 不在括號里時匹配單詞邊界。在括號里時匹配退格鍵 |
| \B | 匹配非詞邊界 |
| \n, \t, etc. | 匹配換行符,回車符,制表符,等 |
| \Q | 引用字符的初始,結束於\E |
| \E | 結束由\Q開始的引用 |
