正则表达式 Regex
来源:互联网 发布:微信提现赚钱软件大全 编辑:程序博客网 时间:2024/06/05 01:53
校验
需求:判断是否为移动的号码,默认是13 15 18开头的11位号码
RegexDemo.java
class RegexDemo{ public static void main(String[] args) { String num="13345678901"; String regexNum="1[358]\\d{9}"; System.out.println(num.matches(regexNum)); }}
“\d”表示数字 “{}”表示个数 “[]”表示范围
匹配
找出三个字母的单词
RegexDemo2.java
import java.util.regex.*;class RegexDemo2{ public static void main(String[] args) { String s="ning hao jin tian bu jia ban"; //"\b"单词边界 String reg="\\b[a-z]{3}\\b"; Pattern p=Pattern.compile(reg); Matcher m=p.matcher(s); // System.out.println(m.matches()); while(m.find()){ System.out.println(m.group()); System.out.println(m.start()+"..."+m.end()); } }}
“\b”这是一个字符,表示单词边界,前面需要”/”提示接下来的字符是需要被转义的,即第二个”/”是要被转义的。
替换
ReplaceDemo.java
class ReplaceDemo{ public static void main(String[] args) { replace("niisjjolkkksl","(.)\\1+","$1"); replace("我我我我我要要要要要学学学学学编编编编程程程程程","(.)\\1+","$1"); } public static void replace(String str,String olds,String news){ String newstr=str.replaceAll(olds,news); System.out.println(newstr); }}
“.”表示所有单个字符 当想表示”.”的时候是用”\.”
“\1”表示第一个()部分
“$1”表示“前面使用过的”第一个()部分
分割
SplitDemo.java
class SplitDemo{ public static void main(String[] args) { // splitString("zhangsan.lisi.wangwu","\\.");//分割普通字符或转义字符,有些字符本来就是转义字符 需要加上一个/表示之后的字符不要被转义。 // splitString("liuhua sdf final dsg"," +");//不同的空格数量 splitString("hsdffiosdnnsdoooof","(.)\\1+");//叠词分割 ()表示组 1表示第几组 } public static void splitString(String str,String reg){ String[] strs=str.split(reg); System.out.println(strs.length); for(String s:strs){ System.out.println(s); } }}
几个联系
import java.util.regex.*;import java.util.*;class RegexTest{ public static void main(String[] args) { test_3(); } //去口吃 public static void test_1(){ String str="我我...我我...我要..要要...要要....学学学....学学..编编编...编程...程.程程...程"; String regex=""; // 用两次替换 String newStr1=str.replaceAll("\\.+",""); String newStr2=newStr1.replaceAll("(.)\\1+","$1"); System.out.println(newStr1); System.out.println(newStr2); } //ip地址排序 public static void test_2(){ String str="192.68.1.254 102.19.23.13 10.10.10.10 2.2.2.2 8.109.90.30"; //补0 String str1=str.replaceAll("(\\d+)","00$1"); //去多余的0 String str2=str1.replaceAll("0*(\\d{3})","$1"); System.out.println(str2); String[] strs=str2.split(" +"); Arrays.sort(strs); for(String s:strs){ System.out.println(s.replaceAll("0*(\\d)","$1")); } } //校验邮箱 public static void test_3(){ String email="sssa2@asiainfo.com.cn"; boolean b=email.matches("[0-9a-zA-Z_]{4,12}@[0-9a-zA-Z]+(\\.[a-zA-Z]+){1,3}"); System.out.println(b); }}
利用正则表达式网络爬虫
找出一个网页中所有的邮箱
import java.net.*;import java.util.regex.*;import java.io.*;class WebCrawler{ public static void main(String[] args) throws Exception{ URL url=new URL("http://blog.csdn.net/kingszelda/article/details/41170835/"); URLConnection conn=url.openConnection(); BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8")); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("hello.html"),"utf-8")); String reg="\\w+@\\w+\\.\\w+"; Pattern p=Pattern.compile(reg); Matcher m; String line=null; while((line=br.readLine())!=null){ m=p.matcher(line); while(m.find()){ System.out.println(m.group()); } bw.write(line); bw.newLine(); } bw.flush(); bw.close(); br.close(); }}
阅读全文
0 0
- Regex 正则表达式
- Regex 深入正则表达式
- [RegEx]经典正则表达式
- 正则表达式 Regex Expression
- 4.3 正则表达式Regex
- 正则表达式(Regex类)
- Java regex正则表达式
- c# 正则表达式 regex
- 正则表达式 boost Regex
- 正则表达式入门 Regex
- Java regex 正则表达式
- boost - regex 正则表达式
- java正则表达式(regex)
- Regex正则表达式
- regex.h - 正则表达式
- 正则表达式Regex
- C# 正则表达式Regex
- java regex 正则表达式
- SVM与Logistic回归的关系
- leetcode31 Next Permutation
- Android 8.0 功能和 API
- SSH连接远程服务器
- 2017-9-15河南财经政法大学开学典礼校长致辞-向阳而立,向善而行
- 正则表达式 Regex
- 使用Spring单元测试出错
- win10 uwp MVVM 轻量框架
- 银行存钱系统可行性分析
- 使用Web Speech API实现语音文本互转
- 有关c语言结构体能否直接赋值的问题
- 千万级别数据表创建索引
- 如何在进行数据库连接到服务器时使用端口号
- java可视化监控工具