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