码迷,mamicode.com
首页 > 编程语言 > 详细

菜鸟成长日记:Java基础篇4 --- 正则表达式

时间:2017-09-29 16:31:43      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:pil   号码   基础   alt   http   字符   分享   描述   ever   

一、初步认识

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,
这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串
从网上搜集了两个例子,感觉很好贴上
 
例一
this\s+is\s+text ---> this is text 
注意字符串中的 \s+。
匹配单词 "this" 后面的 \s+ 可以匹配多个空格,
之后匹配 is 字符串,
再之后 \s+ 匹配多个空格然后再跟上 text 字符串。
 
例二
^\d+(\.\d+)? ----> 2.21
^ 定义了以什么开始
\d+ 匹配一个或多个数字
? 设置括号内的选项是可选的
\. 匹配 "."
可以匹配的实例:"5", "1.5" 和 "2.21"。
 
所以一个字符串其实就是一个简单的正则表达式。
 

二、基本语法

.        任意一个字符串
\             "\\\\"匹配"\","\\("匹配"("。
^             匹配输入字符串开始的位置
$          匹配输入字符串结尾的位置
*        零次或多次匹配前面的字符或子表达式
+        一次或多次匹配前面的字符或子表达式
?        零次或一次匹配前面的字符或子表达式
{n}       n 是非负整数。正好匹配 n 次
{n,m}      匹配至少 n 次,至多 m 次。
{n,}         至少匹配 n 次
?            非贪心的"模式匹配搜索到的、尽可能短的字符串,
              而默认的"贪心的"模式匹配搜索到的、尽可能长的字符串
              在字符串"oooo"中,"o+?"只匹配单个"o",而"o+"匹配所有"o"。
x|y          匹配 x 或 y。例如,‘z|food‘ 匹配"z"或"food"。‘(z|f)ood‘ 匹配"zood"或"food"。
[xyz]       匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。
[^xyz]        反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]            字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。
[^a-z]        反向范围字符。匹配不在指定的范围内的任何字符。例如,"[^a-z]"匹配任何不在"a"到"z"范围内的任何字符。

\b           匹配一个字边界,即字与空格间的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"。
\B           非字边界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。
\d            数字字符匹配。等效于 [0-9]。
\D           非数字字符匹配。等效于 [^0-9]。

三、实例

 1 /**
 2  * 正则表达式测试
 3  * @author wangchong
 4  * @date 2017年9月29日 上午11:25:27
 5  */
 6 public class RegexMatches {
 7  
 8     public static void main( String args[] ){
 9       
10         System.out.println("测试 边界匹配器 $ and ^");
11         
12         System.out.println("测试 \\");
13         System.out.println("abc\\".matches(".*\\\\$"));
14         System.out.println("测试 ^  ");
15         System.out.println("abc\\".matches("^a.*"));
16         
17         System.out.println("实例一: 正则表达式筛选一段文字中的正确的手机号码");
18         System.out.println();
19         
20         String messge = "尊敬的移动用户18352537674您好,您的账号132419255还剩余额111111";
21         System.out.println("信息内容:" + messge);
22         Pattern regex1 = Pattern.compile("\\D+(1\\d{10})\\D+");
23         Matcher matcher = regex1.matcher(messge);
24           
25         while (matcher.find()) {     
26             System.out.print("提取的手机号为:" + matcher.group(1));    
27         }
28         
29    }
30 
31 }

运行结果

技术分享

菜鸟成长日记:Java基础篇4 --- 正则表达式

标签:pil   号码   基础   alt   http   字符   分享   描述   ever   

原文地址:http://www.cnblogs.com/kuangbendecaichong/p/7610923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!