正则表达式快速上手!

276 阅读2分钟

目录

  • 前言
  • 规则
  • 匹配
  • 替换
  • 最后

前言

正则表达式是很通用的东西了, 不论写什么都会用到的, 看看应用中展现的部分正则表达式的功能吧:

正则表达式


规则

只要知道了规则, 几乎没有正则表达式匹配不了的串(手动滑稽). 这里有个推荐的网站. 里面写的很细. 接下来展示如何在Android中实现的.


匹配

Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("abcd1234ABCD5678");

上面两行是关键语句, compile方法中的字符串就是正则表达式, 这里是"\\d+"(注意多一个\是转义符). matcher方法中的字符串就是要匹配的字符串, 这里是"abcd1234ABCD5678". 然后有4种匹配方式, 我在效果图中展示的是find()matches():

序号 方法 说明
1 public boolean lookingAt() 尝试将从区域开头开始的输入序列与该模式匹配。
2 public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。
3 public boolean find(int start) 重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
4 public boolean matches() 尝试将整个区域与模式匹配。
while (m.find()) {
    Log.i("sorrower", m.group());
}

上面的代码可以打印符合正则表达式的子序列结果. 当然你可以使用m.group(x)获取第x个匹配的子序列. 注意从1开始. 用m.start()和m.end()就可以获取到子序列的起始位置和结束位置后面一个位置了. matches()的返回值表示整个匹配是否成功.


替换

除开匹配, 用正则表达式替换也是没问题的哦.

序号 方法 说明
1 public Matcher appendReplacement(StringBuffer sb, String replacement) 实现非终端添加和替换步骤。
2 public StringBuffer appendTail(StringBuffer sb) 实现终端添加和替换步骤。
3 public String replaceAll(String replacement) 替换模式与给定替换字符串相匹配的输入序列的每个子序列。
4 public String replaceFirst(String replacement) 替换模式与给定替换字符串匹配的输入序列的第一个子序列。
5 public static String quoteReplacement(String s) 返回指定字符串的字面替换字符串。这个方法返回一个字符串,就像传递给Matcher类的appendReplacement 方法一个字面字符串一样工作。

最后

喜欢记得点赞或者关注我哦~