正则表达式求一个字符串中出现的次数
描述
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine().toLowerCase();
String nex = br.readLine().toLowerCase();
System.out.println(str.replaceAll("[^"+nex+"]","").length());
------------------------------
特殊字符
$ 结尾位置 (匹配$字符----\$)
^ 开始位置(匹配$字符----\^)
3、常用场景
16进制颜色 /^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ 以#开始 ,6或3个字符(A-F、a-f、0-9)结尾
电话号码 /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/ 以1开头,3可跟任一数字(\d),4可跟5-9,5可跟0-3或5-9 ,6后2567其中一个,7后是0-8,8后任一数字,9后是0-3或3-5,其余8位是任意数字(\d{8})
身份证号 /^[1-9]\d{5}(19|20|21)\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}[\dX]$/ 第一位在0-9区间,后面是5位任意数字,4位年份(19、20、21开头,后两位任意),两位代表月份(0开头的1-9或者是10、11、12),两位日期(01-31),三位顺序码,最后一位是校验码,可数字可X
网址 /^((https?):)?\/\/([^?:/]+)(:(\d+))?(\/[^?]*)?(\?(.*))?/
邮箱 ^[A-Za-z0-9-_\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 名称有汉字([\ue00-\u9fa5])、字母([a-zA-z])、数字、下划线、中划线,域名有数字、字母、下划线、中划线
4、使用方法
字符串.match(正则):返回符合的字符串,若不满足返回null
字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1
字符串.replace(正则,新的字符串):找到符合正则的内容并替换
正则.test(字符串):在字符串中查找符合正则的内容,满足则返回true,反之为false
------------------------------
前言:一般开发中都会接触到正则表达式,作为一名合格的前端,也应该了解一下正则表达式编写原则,便于自己也能快速编写想要的正则表达式。
1、作用(正则表达式是一种字符串匹配的模式)
数据验证:比如电话号码、邮箱等
替换文本:快速找到特定文本,用于替换
快速提取字符串:基于匹配原则,快速从文档中查找或提取子字符串
2、语法(普通字符+特殊字符)
普通字符
[abc] 匹配[...]的所有字符
[^abc] 取反,除了[...]的其他字符
[A-Z] 区间字母A到Z
. 匹配除(\n换行符 \r 回车符)的任何单个字符
\s \S 匹配所有,\s所有空白符,包括换行 \S非空白符,不包括换行
\w 匹配字母、数字、下划线
特殊字符
$ 结尾位置 (匹配$字符----\$)
^ 开始位置(匹配$字符----\^)
() 子表达式开始和结束(匹配字符----\( 和 \))
* 匹配零次或多次(匹配字符----\*)
+ 匹配一次或多次(匹配字符----\+)
? 匹配零次或一次(匹配字符----\?)
| 两项间的一个(匹配字符----\|)
限定符
{n} n为非负整数,匹配n次
{n,} n为非负整数,至少n次
{n,m} n为非负整数,n<=m,最少n次,最多m次
修饰符
i 不区分大小写
g 全局匹配
m 多行匹配
s 特殊字符远点包含换行符
3、常用场景
16进制颜色 /^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ 以#开始 ,6或3个字符(A-F、a-f、0-9)结尾
电话号码 /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/ 以1开头,3可跟任一数字(\d),4可跟5-9,5可跟0-3或5-9 ,6后2567其中一个,7后是0-8,8后任一数字,9后是0-3或3-5,其余8位是任意数字(\d{8})
身份证号 /^[1-9]\d{5}(19|20|21)\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}[\dX]$/ 第一位在0-9区间,后面是5位任意数字,4位年份(19、20、21开头,后两位任意),两位代表月份(0开头的1-9或者是10、11、12),两位日期(01-31),三位顺序码,最后一位是校验码,可数字可X
网址 /^((https?):)?\/\/([^?:/]+)(:(\d+))?(\/[^?]*)?(\?(.*))?/
邮箱 ^[A-Za-z0-9-_\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 名称有汉字([\ue00-\u9fa5])、字母([a-zA-z])、数字、下划线、中划线,域名有数字、字母、下划线、中划线
4、使用方法
字符串.match(正则):返回符合的字符串,若不满足返回null
字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1
字符串.replace(正则,新的字符串):找到符合正则的内容并替换
正则.test(字符串):在字符串中查找符合正则的内容,满足则返回true,反之为false
原文链接:https://blog.csdn.net/sinat_34626741/article/details/123883244