正则表达式
来源:互联网 发布:linux怎么重命名文件 编辑:程序博客网 时间:2024/05/22 10:58
Pattern
正则表达式的编译表示形式。
字符:
x 字符x; a 表示字符'a' \\ 反斜线字符 \t 制表符 ('\u0009') \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') **字符类** [abc] a、b 或 c(简单类) [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围 [a-zA-Z_0-9] 里面包含大写字母或者小写字母或者数字字符 (相当于\\w)**预定义字符:** . 任何字符 QQ:919092924@qq.com \. 转义 (本身就表示一个.) \d 数字:[0-9] [0-9]--->\d(不正确) \\d(代码中正确的写法) \w 单词字符:[a-zA-Z_0-9] java语言单词组成的一些规则需要\\w边界匹配器 ^ 行的开头 $ 行的结束 \b 单词边界 **Greedy 数量词** X? X,一次或一次也没有 :x出现1次或者0次 X* X,零次或多次 :x出现0次或多次 X+ X,一次或多次 :x出现1次或多次 X{n} X,恰好 n 次 :x恰好出现n X{n,} X,至少 n 次 :x至少出现n次 X{n,m} X,至少 n 次,但是不超过 m 次
Matcher 和Matches
matcher(CharSequence input) 创建匹配给定输入与此模式的匹配器。 static boolean matches(String regex, CharSequence input)编译给定正则表达式并尝试将给定输入与其匹配。
典型的调用顺序是
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();
一步调用
boolean b = Pattern.matches("a*b", "aaaaab");
方法:
String regex = "[1-9]\\d{4,14}" ; boolean b = number.matches(regex);
代码;
public static void main(String[] args) {
// 使用正则表达式校验手机号码
//键盘输入手机号码
Scanner sc = new Scanner (System.in);
//接收数据
System.out.println(“请输入你的电话号码”);
String s1= sc.nextLine();
boolean b = s1.matches("[1][38][34568]\\d{8}"); System.out.println(b);}
结果:
请输入你的电话号码
13744443234
false
String类中有一个方法和正则表达式有关系
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
代码:
public static void main(String[] args) {
//返回的是String类型的数组
String s = “aa-bb-cc”;
String[] st=s.split("-"); for(int x= 0 ;x<st.length;x++){ System.out.print(st[x]); }}
结果:
aabbcc
需求:
我有如下一个字符串:”91 27 46 38 50” 请写代码实现最终输出结果是:”27 38 46 50 91”
代码:
public static void main(String[] args) {
String s = “91 27 46 38 50”;
String [ ] arr= s.split(" +"); int [] arr1 = new int[arr.length]; for(int x= 0;x<arr.length;x++){ arr1[x]=Integer.parseInt(arr[x]); } Arrays.sort(arr1); //构造字符串缓冲区 StringBuilder sb = new StringBuilder(); for(int y=0;y<arr1.length;y++){ sb.append(arr1[y]).append(" "); } sb.toString(); System.out.println(sb); }
结果:
27 38 46 50 91
String类中的另一个和正则相关的方法:
public String replaceAll(String regex,String replacement): 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
代码;
public static void main(String[] args) {
String s = “helloworld123456Java78290” ;
String st= s.replaceAll(“\d”,”爱”);
System.out.println(st);
}
结果;
helloworld爱爱爱爱爱爱Java爱爱爱爱爱
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- “玲珑杯”ACM比赛 Round #19 B.Buildings【二分+RMQ】
- Android_非UI:Environment
- 比特币(BitCoin)学习第二天-比特币(BitCoin)矿机变迁史。
- JSON工具的使用---GsonFormat
- jq children 和 find
- 正则表达式
- HDU2014青年歌手大奖赛_评委会打分
- 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记
- CSU 1971:安排座位(贪心)
- 组合模式--部分与整体的解决方案
- STM32菜鸟成长记录---系统滴答定时器(systick)应用1
- UVA
- 快速了解Maven,Ant,Gradle的概念
- XYNU OJ 1073: 习题5-3-2 求最大公约数