Java--Regex-簡單的在字串中找數字,java--Regex
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
附上一張Regex元字元文法:
| 子運算式 |
匹配對應 |
| ^ |
匹配一行的開頭 |
| $ |
匹配一行的結尾 |
| . |
匹配除了分行符號的任何單個字元,也可以利用 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) |
Regex組匹配文本記憶 |
| (?: re) |
沒有匹配文本記憶的Regex組 |
| (?> 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開始的引用 |