目录
三个正则表达式常用类
基础用法
匹配文章中的数字串和字母串
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @description: regex learning
* @author: bigdata_xiangge
* @create: 2021.7.18
**/
public class Regex_basic {
public static void main(String[] args) {
// 文本
String sc = "2001年9月,周杰伦发行了第二张专辑《范特西》," +
"他除了担任专辑的制作人外,还包办了专辑中所有歌曲的作曲;" +
"该专辑是周杰伦确立其唱片风格的作品,其中结合中西方音" +
"乐元素的主打歌《双截棍》成为饶舌歌曲的代表作之一 [32-" +
"33] ;该专辑发行后也让周杰伦打开东南亚市场 [32] ," +
"并于次年凭借该专辑获得第13届台湾金曲奖最佳专辑制作人奖、" +
"最佳流行音乐专辑奖以及香港唱片销量大奖颁奖典礼十大销量国" +
"语唱片等奖项,周杰伦亦凭借专辑中的歌曲《爱在西元前》" +
"获得第13届台湾金曲奖最佳作曲人奖 [34] 。10月,为李" +
"玟创作融合中西方音乐元素的歌曲《刀马旦》。12月24日," +
"发行EP《17Fantasy + Plus》,收录了他在桃园巨蛋演唱会" +
"上演唱的《你比从前快乐》《世界末日》等歌曲。同年,获" +
"得第19届十大劲歌金曲颁奖典礼最受欢迎唱作歌星金奖、叱咤" +
"乐坛流行榜颁奖典礼叱咤乐坛生力军男歌手金奖等奖项。";
//1. 先创建一个Pattern对象 , 模式对象 ,可以理解成就是一个正则表达式对象
Pattern pattern = Pattern.compile("[a-zA-Z]+"); // [a-zA-Z]就是字母,+表示多个
Pattern pattern_num = Pattern.compile("[0-9]+"); // 数字,+表示多个
Pattern pattern_num_al = Pattern.compile("([0-9]+)|([a-zA-Z]+)"); // 数字或字母,但是不是连续,比如17Fantas就会被分为两次提取(17和Fantas),+表示多个
//2.创建一个匹配器对象
// matcher 匹配器按照 pattern(模式/样式),到content文本中去匹配
// 找到就返回true,否则就返回false
Matcher matcher = pattern_num_al.matcher(sc);
// 3.可以开始循环匹配
while(matcher.find()){
// 匹配内容 文本放到 matcher.group(0) 里面
System.out.println("提取到"+matcher.group(0));
}
}
}
输出结果
进阶用法
匹配指定上下文中的内容
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex_up {
public static void main(String[] args) {
// 文本
String sc = "<meta charset=\"UTF-8\">\n" +
"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\" />\n" +
"<meta name=\"referrer\" content=\"always\" />\n" +
"<meta name=\"description\" content=\"周杰伦(Jay Chou),1979年1月18日出生于台湾省新北市,祖籍福建省泉州市永春县,华语流行乐男歌手、原创音乐人、演员、导演、编剧,毕业于淡江中学。2000年发行首张个人专辑《Jay》。2001年发行的专辑《范特西》奠定其融合中西方音乐的风格。2002年举行“The One”世界巡回演唱会。2003年成为美国《时代周刊》封面人物。2004年获得世界音乐大奖中国区最畅销艺人奖。2005年凭借动作片《头文字D》获得金马奖、金像奖最佳新人奖。2006年起连续三年获得世界音乐大奖中国区最畅销艺人奖。2007年自编自导的文艺片《不能说的秘密》获得金马奖年度台湾杰出电影奖。2008年凭借歌曲《青花瓷》获得第19届金曲奖最佳作曲人奖。2009年入选美国CNN评出的“25位亚洲最具影响力人物”,同年凭借专辑《魔杰座》获得第20届金曲奖最佳国语男歌手奖。2010年入选美国《Fast Company》\">\n" +
"<title>周杰伦(华语流行乐男歌手、音乐人、演员、导演)_百度百科</title>\n" +
"<link rel=\"shortcut icon\" href=\"/favicon.ico\" type=\"image/x-icon\" />\n" +
"<link rel=\"icon\" sizes=\"any\" mask href=\"http://baikebcs.bdimg.com/cms/static/baike-icon.svg\">\n" +
"\n" +
"<meta name=\"csrf-token\" content=\"\">\n" +
"<meta itemprop=\"dateUpdate\" content=\"2021-07-17 15:56:46\" />\n" +
"<meta name=\"keywords\" content=\"周杰伦, 周杰伦早年经历, 周杰伦演艺经历, 周杰伦个人生活, 周杰伦主要作品, 周杰伦社会活动, 周杰伦获奖记录, 周杰伦人物评价\">\n" +
"<link rel=\"alternate\" hreflang=\"x-default\" href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" />\n" +
"<link rel=\"alternate\" hreflang=\"zh\" href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" />\n" +
"<link rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" />\n" +
"<link rel=\"alternate\" hreflang=\"zh-Hant\" href=\"https://baike.baidu.hk/item/%E5%91%A8%E6%9D%B0%E5%80%AB/129156\" />\n" +
"<link rel=\"canonical\" href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" />\n" +
"<meta name=\"image\" content=\"https://bkimg.cdn.bcebos.com/smart/023b5bb5c9ea15ce36d31c76c04c2df33a87e9501435-bkimg-process,v_1,rw_1,rh_1,pad_1,color_ffffff?x-bce-process=image/format,f_auto\" />\n" +
"<meta property=\"og:title\" content=\"周杰伦_百度百科\" />\n" +
"<meta property=\"og:description\" content=\"周杰伦(Jay Chou),1979年1月18日出生于台湾省新北市,祖籍福建省泉州市永春县,华语流行乐男歌手、原创音乐人、演员、导演、编剧,毕业于淡江中学。2000年发行首张个人专辑《Jay》。2001年发行的专辑《范特西》奠定其融合中西方音乐的风格。2002年举行“The One”世界巡回演唱会。2003年成为美国《时代周刊》封面人物。2004年获得世界音乐大奖中国区最畅销艺人奖。2005年凭借动作片《头文字D》获得金马奖、金像奖最佳新人奖。2006年起连续三年获得世界音乐大奖中国区最畅销艺人奖。2007年自编自导的文艺片《不能说的秘密》获得金马奖年度台湾杰出电影奖。2008年凭借歌曲《青花瓷》获得第19届金曲奖最佳作曲人奖。2009年入选美国CNN评出的“25位亚洲最具影响力人物”,同年凭借专辑《魔杰座》获得第20届金曲奖最佳国语男歌手奖。2010年入选美国《Fast Company》\" />\n" +
"<meta property=\"og:image\" content=\"https://bkimg.cdn.bcebos.com/smart/023b5bb5c9ea15ce36d31c76c04c2df33a87e9501435-bkimg-process,v_1,rw_1,rh_1,pad_1,color_ffffff?x-bce-process=image/format,f_auto\" />\n" +
"<meta property=\"og:url\" content=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" />\n" +
"<meta property=\"og:site_name\" content=\"百度百科\" />\n" +
"<meta property=\"og:type\" content=\"website\" />\n" +
"<style>";
//1. 先创建一个Pattern对象 , 模式对象 ,可以理解成就是一个正则表达式对象
Pattern pattern = Pattern.compile("<link rel=\"alternate\" hreflang=\"x-default\" href=\"(\\S*)\" />"); // <link rel="alternate" hreflang="x-default" href="(找这里的内容)" />
Pattern pattern_1 = Pattern.compile("link rel=\"alternate\" hreflang=\"(\\S*)\""); // link rel="alternate" hreflang="(找这里的内容)"
//2.创建一个匹配器对象
// matcher 匹配器按照 pattern(模式/样式),到content文本中去匹配
// 找到就返回true,否则就返回false
Matcher matcher = pattern_1.matcher(sc);
// 3.可以开始循环匹配
while(matcher.find()){
// \\S* 匹配内容 文本放到 matcher.group(1) 里面
System.out.println("提取到"+matcher.group(1));
}
}
}
输出结果
匹配ip地址
String ip = "私有地址(Private address)属于非注册地址,专门为组织机构内部使用。\n" +
"以下列出留用的内部私有地址\n" +
"A类 10.0.0.0--10.255.255.255\n" +
"B类 172.16.0.0--172.31.255.255\n" +
"C类 192.168.0.0--192.168.255.255";
Pattern pattern_ip = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");
Matcher matcher_ip = pattern_ip.matcher(ip);
while(matcher_ip.find()){
// \\d 匹配内容 文本放到 matcher.group(0) 里面
System.out.println("提取到"+matcher_ip.group(0));
}