Java中使用正则表达式

来源:互联网 发布:c语言上机心得体会 编辑:程序博客网 时间:2024/06/04 19:16

在Java中使用正则表达式非常方便,使用
Pattern与Matcher两个类就可以满足需求。

  • Pattern 用来存储所使用的正则表达式
  • Matcher 用来对目标字符串执行正则表达式的匹配

例如,我们有一个字符串:

“In winter the nights are long and cold.”

现在我们想要匹配”long and cold”:

String testString = "In winter the nights are long and cold.";Pattern testPattern = Pattern.compile("long and cold");Matcher testMatcher = testPattern.matcher(testString);

Pattern的compile方法将我们的正则表达式编译成了一个“Pattern”,然后我们使用Pattern的matcher方法,并返回一个Matcher对象。


接下来,我们要通过Matcher的一系列方法,来从中提取出我们想要的字符串。
首先使用find()方法,可以在字符串中查找匹配正则,当有匹配到的字符串时,它会返回true

testMatcher.find()

我们需要根据返回值,通过Matcher的group方法,来提取出匹配到的组(如果没有find到任何串,调用group也是没有意义的):

if (testMatcher.find()){    System.out.println(testMatcher.group(0));}

程序输出:

long and cold

在这里,group(0)实际和直接调用group()(无参数)是一样的。
在Java中,通过正则直接匹配到的组,标号就是0。

标号非0的组,是使用正则捕获的组。这是正则表达式中的一个使用方法:
当我们在表达式中添加括号,则其中的部分被捕获并分组。
整个正则表达式匹配到的分组是0,
第一个括号捕获的分组是1,
第二个括号捕获的分组是2,……

例如我们想匹配”long and cold”这一短语,并从中提取出”long”和”cold”两个单词。那么我们的正则表达式需要写成

(long) and (cold)

find()方法调用前的代码完全相同,匹配到串以后,通过组号获得结果:

if (testMatcher.find()) {    System.out.println(testMatcher.group(0));    System.out.println(testMatcher.group(1));    System.out.println(testMatcher.group(2));}

这次程序的输出是:

long and cold
long
cold

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 婴儿喝水呛着怎么办 婴儿吃药呛到了怎么办 新生儿用奶瓶喝奶呛着怎么办 新生儿喝水呛到怎么办 宝宝吃奶呛到了怎么办 羔羊高烧不退怎么办 小孩晚上咳嗽厉害怎么办 婴儿经常呛咳怎么办 新生儿3小时喂奶怎么办 宝宝不会吸奶怎么办 4岁宝宝打呼噜怎么办 宝宝感冒拒奶怎么办 新生儿吸奶无力怎么办 吃奶小牛肚子胀怎么办 新生儿吃奶后打嗝怎么办 新生儿吃多漾奶怎么办 婴儿总是睡不熟怎么办 新生儿不不吃奶怎么办 学生沉迷网络游戏班主怎么办 手机用不了卡怎么办 手机变竖屏怎么办 游戏不支持分屏怎么办 服装设计做到没思路怎么办 眼睛变单眼皮了怎么办 换手机号银行卡绑定怎么办 麦当劳mdp改版了怎么办 摆摊做小吃下雨怎么办 cad2014画图很卡怎么办 头皮有毛囊虫怎么办 头发上的毛囊炎怎么办 狗笼子里面拉屎怎么办 地图鱼起白点怎么办 初中学不好高中怎么办 初中孩子英语不好怎么办 初中孩子数学不好怎么办 万能声卡声音小怎么办 营业执照显示经营异常怎么办 暑假教育培训证怎么办 账套引入失败怎么办 报税报错了怎么办 税盘一年没抄税怎么办