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 | 整个字符串的结束 |
| 整个字符串的结束,除了最后一行的结束符 | |
| 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 | 匹配空格。等价于 [ f] |
| S | 匹配非空格 |
| d | 匹配数字. 等价于 [0-9] |
| D | 匹配非数字 |
| A | 匹配字符串的开始 |
| 匹配字符串的末尾,如果存在新的一行,则匹配新的一行之前 | |
| z | 匹配字符串的末尾 |
| G | 匹配上一次匹配结束的地方 |
| 返回参考捕获组号“N” | |
| 不在括号里时匹配单词边界。在括号里时匹配退格键 | |
| B | 匹配非词边界 |
| , , etc. | 匹配换行符,回车符,制表符,等 |
| Q | 引用字符的初始,结束于E |
| E | 结束由Q开始的引用 |