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開始的引用 |