正则,String中用法,Pattern Matcher
package com.正则表达式; import java.util.Scanner; /**
*
* 校验qq号码
* 1:要求必须是5-15位数字
* 2: 0不能开头
* 分析:
* A:键盘录入qq号码
* B:写一个功能
* C:调用功能,输出结果
*
*/
public class RegexDemo {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的qq号码:");
String qq=sc.nextLine();
System.out.println("checkQQ:"+checkQQ(qq));
}
/**
* 写一个实现校验
* 两个明确:
* 返回值类型:boolean
* 参数列表:String qq
*/ public static boolean checkQQ(String qq){
boolean flag=true;
if(qq.length()>=5 && qq.length()<=15){//位数
if(!qq.startsWith("0")){//开头
char[] cha=qq.toCharArray();
for(int i=0;i<cha.length;i++){//内容
if(!Character.isDigit(cha[i])){
flag=false;
break;
}
}
}else{
flag=false;
}
}else{
flag=false;
}
return flag;
}
}
引入正则
package com.正则表达式; import java.util.Scanner; /**
*
* 正则表达式:符合一定规则的字符串
*
*/
public class RegexDemo2 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的qq号码:");
String qq=sc.nextLine();
System.out.println("checkQQ:"+checkQQ(qq));
} public static boolean checkQQ(String qq){
//String regex="[1-9][0-9]{4,14}";
//public boolean matches(String regex) 告知此字符串是否匹配正则表达式
//boolean flag=qq.matches(qq);
return qq.matches("[1-9][0-9]{4,14}");
}
}
引入正则2
正则表达式要求:
A:字符
x 字符x。举例:‘a’表示字符a
\\ 反斜线字符
\n 换行符('\u000A')
\r 回车符('\u000D')
B:字符类
[abc] a、b或者c(简单类)
[^abc] 除了abc外的其他一个字符
[a-zA-Z] a到z或A到Z,两头的字母都包括在内
[0-9] 0-9内的字符都包括
C:预定义字符类
.表示任何字符。表示本身使用\转义
\d 数字0-9,[0-9]
\D 非数字
\s 非空白字符
\S 非空白字符
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须由这些东西组成
D:边界字符
^ 行的开头
$ 行的结尾
\b 单词字符
就是不是单词字符的地方
举例:hello world?haha;xixi
E:数量词
X? X出现0次或者一次
X* X出现0次或者多次
X+ X出现1次或多次
X{n} X出现恰好n次
X{n,} X出现至少n次
X{n,m} X出现至少n次,但是不超过m次
F:字符集
字面值转义 \x
分组 [...]
范围 a-z
并集 [a-e][i-u]
交集 [a-z&&[aeiou]]
package com.正则表达式._2; import java.util.Scanner; /*
*
* 判断功能
* String类的public boolean matches(String regex)
*
* 需求:
* 判断手机号码是否满足功能
* 分析:
* A:键盘录入手机号码
* B:定义手机号码的而规则
* 1开头,11位数,全部数字
* C:调用功能,判断即可
* D:输出结果
* 需求:
* 校验邮箱
* 分析:
* A:键盘录入手机号码
* B:定义邮箱的规则
* 1开头,11位数,全部数字
* C:调用功能,判断即可
* D:输出结果
*/
public class RegexDemo01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入邮箱:");
String email=sc.nextLine();
//String regex="[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]{2,3})+";
String regex="\\w+@\\w{2,6}(\\.\\w{2,3})+";
boolean flag=email.matches(regex);
System.out.println(flag);
}
public boolean pdphone(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的手机号码:");
String phone=sc.nextLine();
String regex="[1]\\d{10}";
boolean flag=phone.matches(regex);
return flag;
}
}
判断
package com.正则表达式._2; import java.util.Arrays;
import java.util.Scanner; /*
* 分割功能
* public String[] split(String regex)
* 根据给定正则表达式拆分字符串
*
* 举例:
* 百合网,世纪佳缘,珍爱网,QQ
* 搜索好友
* 性别:女
* 范围:“18-24”
*
* age>=18 && age<=24
*
* 定义一个字符串,分割
*
* 将”91 27 46 38 50“输出最终为”27 38 46 50 91“
*/
public class RegexDemo02 {
public static void main(String[] args) {
String str1="91 27 46 38 50";
String[] strArray=str1.split(" ");
int[] arr=new int[strArray.length];
for(int i=0;i<strArray.length;i++){
arr[i]=Integer.parseInt(strArray[i]);
}
Arrays.sort(arr);
StringBuilder sb=new StringBuilder("");
for(int i=0;i<arr.length;i++){
sb.append(arr[i]+" "); }
System.out.println(sb);
}
public void test02(){
String s1="aa,bb,cc";
String[] str1Array=s1.split(",");
for(int i=0;i<str1Array.length;i++){
System.out.println(str1Array[i]);
}
System.out.println("------------------------");
s1="aa.bb.cc";
str1Array=s1.split("\\.");
for(int i=0;i<str1Array.length;i++){
System.out.println(str1Array[i]);
}
System.out.println("-------------------");
s1="aa bb cc";
//str1Array=s1.split("\\s+");
str1Array=s1.split(" +");
for(int i=0;i<str1Array.length;i++){
System.out.println(str1Array[i]);
}
System.out.println("-------------------");
s1="E:\\JavaSE\\day14\\avi";
str1Array=s1.split("\\\\");
for(int i=0;i<str1Array.length;i++){
System.out.println(str1Array[i]);
}
System.out.println("-------------------");
}
public void test01(){
//定义一个年龄搜索范围
String ages="18-24";
String regex="-";
String[] strArray=ages.split(regex);
/*for(int x=0;x<strArray.length;x++){
System.out.println(strArray[x]);
}*/
int startAge=Integer.parseInt(strArray[0]);
int endAge=Integer.parseInt(strArray[1]); Scanner input=new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age=input.nextInt();
if(age>=startAge && age<=endAge){
System.out.println("你就是我想找的");
}else{
System.out.println("不符合我的要求");
}
}
}
分割
package com.正则表达式._2;
/*
* 正则表达式用于替换:
* public String replaceAll(String regex,String replacement) 使用给定的字符串替换本字符串中所有匹配给定正则表达式的子字符串
* public String replaceFirst(String regex,String replacement) 使用给定的字符串替换本字符串中第一个匹配给定正则表达式的子字符串
*/
public class RegexDemo03 {
public static void main(String[] args) {
String s="helloqq12345worldkh12313423java";
String regex="\\d+";
//String regex="\\d";
String ss="*";
// String result=s.replaceAll(regex, ss);
// System.out.println(result);
String result=s.replaceFirst(regex, ss);
System.out.println(result);
}
}
替换
package com.正则表达式._2; import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /*
* 前面使用String中的方法操作正则表达式进行字符串的判断、切割、替换
* 如果要使用查找功能的话,使用String类就无法达到了。
*
* Pattern
* 模式 正则表达式的编译表达形式
* 它主要是用来创建对应的匹配器对象然后使用匹配器对象的方法进行匹配
* 版本1.4开始
* 没有构造,
* compile(String regex) 获得匹配器对象
* pattern() 返回在其中编译过此模式的正则表达式
* String[] split(CharSequence input) 根据此模式的匹配拆分输入序列
* matches(CharSequence input) 创建此模式的匹配器
* static matchers(CharSequence input) 静态的,相当于compile方法和matcher方法的一步到位
* Matcher
* 匹配器 通过解析Pattern对character sequence执行匹配操作的引擎
* 使用它一般执行三种不同的匹配操作:
* matches 尝试将整个输入序列与该模式匹配
* lookingAt 尝试将该输入序列从头开始于该模式匹配,与matches不同的是它不需要匹配整个字符串
* find 尝试查找与该模式匹配的输入序列的下一个子序列 find与lookingAt的区别在于“下一个”
* 方法:
* int end()返回最后匹配字符之后的偏移量,就是它的下标
* boolean find()
* boolean find(int start) 重置匹配器,然后从索引处开始查找
* String group() 返回由以前匹配操作所匹配的输入子序列,就是返回匹配的输入字符串序列
* int group() 返回匹配的序列的数量
* boolean lookingAt() 尝试将区域开头开始的输入序列与该模式匹配
* quotReplacement(String s) 返回指定String的字面替换String,相当于String中的replaceAll
* Matcher region(int start,int end) 设置匹配器区域
* int regionStart() 返回匹配器匹配区域的开始索引
* int regionEnd() 返回匹配器匹配区域的结束索引
*/
public class PatternAndMatcher {
public static void main(String[] args){
testFind();
}
public void testPattern(){
String s="fghgf sashg sas sa";
String regex="\\s+";
Pattern p=Pattern.compile(regex);
String[] strArray=p.split(s);
System.out.println(Arrays.toString(strArray));
System.out.println(p.pattern());
}
public static void testFind(){
String s="hello , nice to meet you ! I'm guo zhen , let's me play with game !";
String regex="\\b\\w{3}\\b";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
String s1=m.group();
System.out.println(s1);
} }
}
查找和构造器与模式
正则,String中用法,Pattern Matcher的更多相关文章
- java成神之——java中string的用法
java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...
- Java Pattern Matcher 正则应用
转自:http://www.itzhai.com/java-notes-regex-matches-and-lookingat.html#read-more 1.基本语法 2.String内建的正则表 ...
- java:正则匹配Pattern,Matcher
一.正则匹配Pattern,Mather String s = "aa424fsfsd92lfjw2755097"; Pattern p = Pattern.compile(&qu ...
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- Lua 中string.gsub(sourceString, pattern, replacementString) 返回值有两个
这阵子在学习lua,今天看到string操作,书中描述string.gsub(sourceString, pattern, replacementString)返回一个字符串,但是我在实际操作中却发现 ...
- 正则验证:Pattern,Matcher
public static void main(String[] args) { String regex="([a-z]{1})(\\d{2})"; String candida ...
- C#中string.Format 用法详解
这篇文章主要介绍了C#中string.format用法,以实例形式较为详细的讲述了string.format格式化的各种用法,非常具有实用价值,需要的朋友可以参考下 本文实例总结了C#中string. ...
- C++ string中find() 用法
string中 find()的用法 rfind (反向查找) (1)size_t find (const string& str, size_t pos = 0) const; //查找对 ...
- 关于java中String的用法
在java 中String存在许多的基本函数,接下来了解一下这些函数的基本用法 String.equals用法(这个用法比较难) String类中的equals()方法: public boolean ...
随机推荐
- 【云安全与同态加密_调研分析(8)】同态加密技术及其应用分析——By Me
◆同态加密技术(Homomorphic Encryption, HE)及其应用◆ ◆加密方案◆ ◆应用领域◆ ◆厂商◆ ◆同态加密现有产品形态和工程实现◆ ◆参考链接◆ ◆备注(其他参考信息)◆ 同态 ...
- [SharpMap] 屏幕坐标和Map坐标转换
1. SharpMap中屏幕坐标和地图Map坐标转换: using System.Drawing; using GeoAPI.Geometries; namespace SharpMap.Utilit ...
- laravel常用的artisan命令
转载来源链接: https://blog.csdn.net/jiandanokok/article/details/72897682 全局篇 查看artisan命令 php artisan php a ...
- Web Services 简介
通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能.Web Services 脚本平台需支持 XML + HTTP. Web Services 简介 Web Serv ...
- [LeetCode] 82. Remove Duplicates from Sorted List II_Medium tag: Linked List
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinctnumbe ...
- ACM ICPC, Amman Collegiate Programming Contest (2018) Solution
Solution A:Careful Thief 题意:给出n个区间,每个区间的每个位置的权值都是v,然后找长度为k的区间,使得这个区间的所有位置的权值加起来最大,输出最大权值, 所有区间不重叠 思路 ...
- jQuery中的prop和attr区别
最近在做一个项目用jq时发现一个问题 在谷歌中可以正常出效果 但是在火狐中就是不行 就是这个prop和attr 之前用的是attr方法 但是在火狐中不出效果 于是特意看了两者的区别 主要 ...
- SQL学习笔记四(补充-1-1)之MySQL单表查询补充部分:SQL逻辑查询语句执行顺序
阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SELECT语句关键字的定义顺序 SELE ...
- 常用php操作redis命令整理(二)哈希类型
HSET将哈希表key中的域field的值设为value;如果field是哈希表中的一个新建域,并且值设置成功,返回1;如果哈希表中域field已经存在且旧值已被新值覆盖,返回0. <?php ...
- STM32端口输入输出模式配置
STM32的IO口模式配置 根据数据手册提供的信息,stm32的io口一共有八种模式,他们分别是: 四种输入模式 上拉输入:通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平. 下拉输入:把电 ...