正则表达式--——组叠词

需求

将下列字符串转成:我要学编程:

我我...我我...我要..要要...要要...学学学..学学...编编编编....编程..程....程程程程..程.

1,将所有.去掉   s.replace("\.",""); 或者 s.replaceAll("\\.+","");

import java.lang.*;
import java.util.*;
class regText 
{
	public static void main(String[] args) 
	{
		text();
		IPSort();
	}
	public static void text()
	{
		String s = "我我...我我...我要..要要...要要...学学学..学学...编编编编....编程..程....程程程程..程.";
		//s = s.replaceAll("\\.+","");//去掉字符 可用空字符串替换
		s= s.replace(".","");
		System.out.println("["+s+"]");
	}
	/*
	需求
将IP地址进行地址段顺序的排序
192.168.1.254 102.49.23.103 10.10.10.5 2.2.2.2 127.0.0.1
按字符串自然顺序排序,只要让它们每一段都是3位即可
1,按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位
2,将每一段只保留3位 这样 所有的IP地址都是每一段3位
3,将排序好的IP地址输出 补的0去掉
	*/
	public static void IPSort()
	{
		String IPs = "192.168.1.254 102.49.23.103 10.10.10.5 2.2.2.2 127.0.0.1";
		//IP所有段都补上3个0
		IPs = IPs.replaceAll("(\\d+)","00$1");
		System.out.println(IPs);
		//然后 保留后面的三位
		IPs = IPs.replaceAll("0*(\\d{3})","$1");
		System.out.println(IPs);
		//按照空格 切割
		String[] IP = IPs.split(" +");
		for(String s:IP)
		{
			System.out.println(s);
		}
		System.out.println("==============");
		/*
		//对IP进行自然排序  Arrays.sort()方法
		Arrays.sort(IP);
		for(String s:IP)
		{
			//把字段前面的0去掉
			s = s.replaceAll("0*(\\d+)","$1");//去掉前面的0保留后面的0
			System.out.println(s);
		}
		*/
		TreeSet<String> ts = new TreeSet<String>();
		for(String s:IP)
		{
			//将IP添加到集合  会自动排序
			ts.add(s);
		}
		for(String s:ts)
		{
			//把字段前面的0去掉
			s = s.replaceAll("0*(\\d+)","$1");
			System.out.println(s);
		}
	}
}
时间: 2024-10-05 23:44:09

正则表达式--——组叠词的相关文章

java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)

import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; class MyComparator implements Comparator<String>{ public int compare(String ip1, String ip2) { Pattern p

groovy regex groups(groovy正则表达式组)

先看一个java正则表达式的例子. import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestMatch { public static void main(String[] args) { Pattern pattern = Pattern.compile("G.*"); Matcher matcher = pattern.matcher("Groovy");

第六届蓝桥杯java组 叠骰子

题意: 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6. 假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来. atm想计算一下有多少种不同的可能的垒骰子方式. 两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同. 由于方案数可能过多,请输出模 10^

具有相同模式的字符串,使用正则表达式组的提取和替换的案例

对具有相同模式的字符串内不同的组的提取怎样做呢,我是这样做的: 提取字符串:sourcetext:{name:john,data:[1,2,3],name:marry,data:[4,5,6]} 代码: Regex reg = new Regex(@"data:\[([\w|.|,]{1,})\]", RegexOptions.IgnoreCase); MatchCollection matches = reg.Matches(series); foreach (Match match

常见的正则表达式

在开始之前先说一些值得大家注意的事项吧 1 正则表达式没有逻辑与.逻辑非关系.那么要实现逻辑与,就要靠表达式序列来实现了,也就是组合.而逻辑非要靠零宽断言来实现了,但是不幸的是,现在大多数工具对断言啊,分组捕获的支持并不完整.比如sed,是不支持断言的. 2 正则表达式的逻辑或关系,在正则表达式中是靠多选来实现的. 3 请谨遵语法,对于那些用惯了一个*来代表若干字符的,请注意,这并不是标准的正则表达式,而是一些工具自己内部封装的特殊符号. 4 注意匹配的范围,正则表达式默认是匹配最大范围,就是说

java学习——正则表达式

本文内容来源于  历经5年锤练--史上最适合初学者入门的Java基础视频 例:要求QQ号长度为5~15位,不能以0开头 String qq="123456"; String regex="[1-9][0-9]{4,14}";//正则表达式 boolean b = qq.matches(regex); System.out.println(qq+":"+b);//qq:true 正则表达式用于操作字符串数据.通过一些特定的符号来体现.为了掌握正则表

黑马程序员——正则表达式

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式用于操作字符串数据.通过一些特定的符号来体现的.所以我们为了掌握正则表达式,必须要学习一些符号. 正则表达式可以简化对字符串的复杂操作.虽然简化了操作,但是阅读性差. 1.常见符号 说明:X表示字符X或者匹配的规则. 1.字符 x                  字符 x \\                 反斜线字符 \t                 制表符 (

java正则表达式2 -- 匹配、切割、查找

1 import java.util.Arrays; 2 3 /* 4 正则表达式的作用: 5 6 1 匹配 7 8 2 切割 9 10 3 替换 11 12 * */ 13 public class Demo1 { 14 public static void main(String[] args) { 15 isPhone("0314-16610306"); 16 cutStr1("火 影 忍 者"); 17 cutStr2("大家家明天天玩的的的的的开

java(十四)反射和正则表达式

反射机制: java反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用他的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 说简单点:动态获取类中的信息,就是java的反射.可以理解为对类的剖析. 反射技术提高了应用的扩展性,而且应用简单,所以很常用. 想要对一个类文件进行解剖,只要获取该类的字节码文件对象即可.怎么获取呢? 获取字节码对象的方式: package day28;