黑马学习日记_正则表达式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 黑马学习日记_正则表达式

黑马学习日记_正则表达式

 2014/4/4 3:15:26  小驴变黑马  程序员俱乐部  我要评论(0)
  • 摘要:----------------------android开发、java培训、期待与您交流!----------------------1、什么是正则表达式?作用是什么?正则表达式就是符合一定规则的表达式。作用:用于专门操作字符串的规则(操作字符串不是有String类吗因为String类中的方法操作字符串过于简单,但要组合操作字符串又过于复杂,所以通过正则表达式更容易些)特点:用一些特定的符号表示一些代码的操作,这样就能简化书写,所以学习正则表达式就是在学习一些特殊符号的使用,APIjava
  • 标签:学习 正则表达式 表达式 正则
----------------------class="Apple-converted-space">?android开发、java培训、期待与您交流! ---------------------- 1、什么是正则表达式?作用是什么? 正则表达式就是符合一定规则的表达式。 作用:用于专门操作字符串的规则(操作字符串不是有String类吗因为String类中的方法操作字符串过于简单,但要组合操作字符串又过于复杂,所以通过正则表达式更容易些) 特点:用一些特定的符号表示一些代码的操作,这样就能简化书写,所以学习正则表达式就是在学习一些特殊符号的使用,API java.util.regex包中Pattern类有详细的定义。 ? 2、正则表达式的小应用——判断QQ号 需求:判断QQ号,该QQ号5~15位 0不能开头 只能是数字 思路:在String中有一个方法 boolean matches(String regex) 参数是一个正则表达式,所以我们定义一个正则表达式即可。
public static void qqJiancha(String str)
{
String regex = "[1-9] [0-9] {4,14}";//该语句就是正则表达式规则意思是:第一位是1到9的数字 第二位是0到9的数字后面是第二位出现的次数,最少4次最多14次。如果任意条件不满足则返回false。
if(str.matchaes(regex))
System.out.println("QQ号正确");
else
System.out.println("QQ号错误");
} 
?????????? 3、正则表达式的使用 1、匹配 通过String类中的方法 boolean matches(String regex) 用规则匹配整个字符串,只要有一处不符合规则就匹配结束并返回false。 在正则中[abc] 可用于判断字符串中某一个位置上出现的字符,要么是a要么是b要么是c,只能有一个字符 [^abc] 除了abc以外的任意字符 [a-zA-Z] 小写a到z或者大写A到Z \d 代表0到9数字等同于[0-9],但在写正则是应写成"\\d"因为\本身是转义字符,所以在正则中\是成对 . 点 代表任意字符 Greedy 数量词X代表正则 X? X,一次或一次也没有 // eg :regex = "[a-z] \\d ?";第一位是a~z第二位是数字但可能有1次也可能没有 X* X,零次或多次? X+ X,一次或多次? X{n} X,恰好 n 次? X{n,} X,至少 n 次 X{n,m} X,至少 n 次,但是不超过 m 次 ? 2、切割 2.1通过String类中的方法String[ ] split(String regex) 2.2按照叠词(后一个和前一个一样的词)进行切割 正则写法:regex = "(.)\\1";//该语句用到了组,意思是第一位是任意字符而第二位和第一位一样。为了可以让规则的结果被重用可以将规则封装成组用()完成,组的出现都有编号,从1开始想要使用已有组可以通过\\n的形式来获取,其中n是组的编号。如果会出现多次可以在后面写个+号,即regex = "(.)\\1+"。((())())问几组看有几个左括号。 3、替换 3.1通过String类中的方法String ?replaceAll(String regex, String replacement) eg:将字符串中的数字替换成#号 sfsf43346365ghfh replaceAll( "\\d{5,}","#")//数字出现5个或5个以上的就替换成# eg:将叠词替换成单个字母 sadaddddddfdseee replaceAll( "(.)\\1+","$1")//将叠词替换成一个,$1是获取组第一组。 4、获取 4.1就是将字符串中符合规则的规则的子串取出来 步骤: 1、将正则表达式封装成对象 2、让正则对象和要操作的字符串相关联 3、关联后获取一个正则匹配引擎 4、通过引擎对符合规则的字符串进行操作比如取出
import java.util.regex.*;
class GetString 
{
public static void main(String[] args) 
{
String s ="hei ma  wo lai la ,deng zhe wo o ga yo ji";
String regex = "\\b[a-z]{2}\\b";
regexString(s,regex);
}
 
public static void regexString(String s,String regex)
{
//将正则表达式封装成对象
Pattern p = Pattern.compile(regex);
//将正则表达式与字符串相关联,并获取引擎Matcher
Matcher m = p.matcher(s);
//通过引擎Matcher中的find()方法对字符串进行匹配
//通过group()方法获取匹配后的结果
while(m.find())
{
System.out.println("m.group()"+m.group());
}
}
}
?? 4、怎么选择正则表达式的功能? 思考方式: 1、如果只想知道该字符串是否对错,使用匹配。 2、想要将已有的字符串转换成另一个字符串,使用替换。 3、想要按照自定义的方式将字符变成多个字符串,使用切割 4、想要拿到符合需求的字符串子串,使用获取 ? 5、正则表达式小练习
class Test1 
{
public static void main(String[] args) 
{
//将字符串转换成“我要学编程”
//将已有字符串转换成另一个字符串 使用替换功能
String str ="我我...我我....我我.........我要要...学学学.......学...编编编....程程";
String regex = "\\.+";
//将字符串中的.替换成“”
String str1 = str.replaceAll(regex,"");
//通过引用组,将叠词替换成一个词
String str2 = str1.replaceAll("(.)\\1+","$1");
System.out.println("结果是:"+str2);
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.util.*;
class Test2 
{
public static void main(String[] args) 
{
ipSort();
}
 
public static void ipSort()
{
String ip = "192.168.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.30.90";
//通过替换功能将 为IP地址补0
String ip1 =ip.replaceAll("(\\d+)","00$1");
System.out.println("补完2个0后的结果:"+ip1);
//补完0后有的结果会是5位,所以将结果都保留3位
String ip2 = ip1.replaceAll("0*(\\d{3})","$1");
System.out.println("保留3位后的结果:"+ip2);
//将ip2进行切割 以" +"切
String[] ip3 =ip2.split(" +");
//对字符数字进行排序并打印
Arrays.sort(ip3);
for (int i=0;i
{
//正则意思 0出现零次或多次,第二位是数字出现一次或多次 引用组
System.out.println(ip3[i].replaceAll("0*(\\d+)","$1"));
}
 
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//对邮件地址进行校验
public static void checkMail()
{
String mail = "aewgw4252@sina.com";
String regex ="[a-zA-Z0-9_]{4,11}@[a-zA-Z0-9]{2,7}(\\.[a-zA-Z]+){1,2}";
System.out.println(mail.matches(regex));
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
网页爬虫(从互联网或文件中获取自己自定义的内容)
import java.io.*;
import java.util.regex.*;
import java.net.*;
class paChong 
{
public static void main(String[] args) throws Exception
{
getMail();
//webMail();
}
//从网页中获取邮箱
public static void webMail()throws Exception
{
//String mailRegex ="[a-zA-Z0-9_]{3,15}@[a-zA-Z0-9]{1,5}(\\.[a-zA-Z]+){1,2}";
String mailRegex ="\\w+@\\w+(\\.\\w+)+";
URL url = new URL("http://blog.sina.com.cn/s/blog_515617e60101e151.html");
Pattern p = Pattern.compile(mailRegex); 
//获取连接器
URLConnection uc = url.openConnection();
//获取流
BufferedReader bfr = new BufferedReader(new InputStreamReader(uc.getInputStream())); 
String line = null;
while((line=bfr.readLine()) != null)
{
Matcher M =p.matcher(line);
if(M.find())
{
System.out.println(M.group());
}
}
 
 
}
//从文本中获取邮箱
public static void getMail()throws Exception
{
String mailRegex ="\\w+@\\w+(\\.\\w+)+";
//String mailRegex ="[a-zA-Z0-9_]{4,11}@[a-zA-Z0-9]{2,7}(\\.[a-zA-Z]+){1,2}";
File f = new File("G:\\桌面临时文件\\mail.txt");
Pattern p = Pattern.compile(mailRegex);
if(f.exists())
{
BufferedReader bfr = new BufferedReader(new FileReader(f));
String line = null;
while((line=bfr.readLine()) != null)
{
Matcher M =p.matcher(line);
if(M.find())
{
System.out.println(M.group());
}
}
}
}
}
?? ----------------------?android开发、java培训、期待与您交流! ----------------------
发表评论
用户名: 匿名