希望正则表达式的高手帮下忙

老白分享 2012-12-06 10:26:44
问题如下:
public void test(){
String str = "I82+I88";
String regex = null;
String replacement = null;
str.replaceAll(regex, replacement);

//希望匹配后的结果,类似下面
str = "[T192.I82]+[T192.I88]";
}

希望熟悉正则表达式替换的大牛,帮忙解决,不胜感激!
...全文
77 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老白分享 2012-12-06
  • 打赏
  • 举报
回复
引用 4 楼 faping_cao 的回复:
Java code?123456String str = "I82+I88"; String regex = "([A-Z]{1,2}[1-9]{1,3})"; String replacement = "[T192\\.$1]"; System.out.println(str.replaceAll(regex, replacem……
([A-Z]{1,2}[1-9]{1,3}) 还有没有必要改成 (^[A-Z]{1,2}[1-9]{1,3}$),用来开始和结束呢?是否功能都是一样的,加上括号就可以了?
老白分享 2012-12-06
  • 打赏
  • 举报
回复
引用 4 楼 faping_cao 的回复:
Java code?123456String str = "I82+I88"; String regex = "([A-Z]{1,2}[1-9]{1,3})"; String replacement = "[T192\\.$1]"; System.out.println(str.replaceAll(regex, replacem……
非常感谢,你的回答我很满意。
Inhibitory 2012-12-06
  • 打赏
  • 举报
回复
public class Test {
	public static void main(String[] args) {
		String str = "I82+I88";
        String regex = "(I\\d+)";
        String replacement = "[T192.$1]";
        str = str.replaceAll(regex, replacement);
        
        System.out.println(str);
         
        str = "[T192.I82]+[T192.I88]";
	}
}
老白分享 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 AA5279AA 的回复:
1.Java中在某个字符串中查询某个字符或者某个子字串 Java代码 1.String s = "@Shang Hai Hong Qiao Fei Ji Chang";    2.String regEx = "a|F"; //表示a或F 3.Pattern pat = Pattern.compile(regEx); 4.Matche……
我这么写:如何改一下
//满足str的匹配条件,regex和replacement如何写才正确
		String str = "I82+I88";
		String regex = "^[A-Z]{1-2}[0-9]{1-3}$";
		String replacement = "[\0\1]";
		
		Pattern pat = Pattern.compile(regex); 
		Matcher mat = pat.matcher(str);
		boolean rs = mat.find();  
		if (rs) {
			mat.replaceAll(replacement);
			System.out.println(str);
		}
faping_cao 2012-12-06
  • 打赏
  • 举报
回复

String str = "I82+I88";
		String regex = "([A-Z]{1,2}[1-9]{1,3})";
		String replacement = "[T192\\.$1]";
		System.out.println(str.replaceAll(regex, replacement)); 
		// 希望匹配后的结果,类似下面
		str = "[T192.I82]+[T192.I88]";
这样?
失落夏天 2012-12-06
  • 打赏
  • 举报
回复
String regEx="^[A-Z]{1,2}$"; //这是第一个,第二个类似 ,我也是看那篇文章后照着学的。 Pattern pat=Pattern.compile(regEx); Matcher mat=pat.matcher("I82+I88"); String s=mat.replaceAll("[T192"+mat+"]");
失落夏天 2012-12-06
  • 打赏
  • 举报
回复
1.Java中在某个字符串中查询某个字符或者某个子字串 Java代码 1.String s = "@Shang Hai Hong Qiao Fei Ji Chang";    2.String regEx = "a|F"; //表示a或F 3.Pattern pat = Pattern.compile(regEx); 4.Matcher mat = pat.matcher(s); 5.boolean rs = mat.find(); String s = "@Shang Hai Hong Qiao Fei Ji Chang";    String regEx = "a|F"; //表示a或F Pattern pat = Pattern.compile(regEx); Matcher mat = pat.matcher(s); boolean rs = mat.find(); 如果s中有regEx,那么rs为true,否则为flase。 如果想在查找时忽略大小写,则可以写成Pattern pat=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); 2.在某个文件中获取一段字符串 Java代码 1.String regEx = ".+\(.+)$"; 2.String s = "c:\test.txt"; 3.Pattern pat = Pattern.compile(regEx); 4.Matcher mat = pat.matcher(s); 5.boolean rs = mat.find(); 6.for(int i=1;i<=mat.groupCount();i++){ 7.  System.out.println(mat.group(i)); 8.} String regEx = ".+\(.+)$"; String s = "c:\test.txt"; Pattern pat = Pattern.compile(regEx); Matcher mat = pat.matcher(s); boolean rs = mat.find(); for(int i=1;i<=mat.groupCount();i++){   System.out.println(mat.group(i)); }  以上的执行结果为test.txt,提取的字符串储存在mat.group(i)中,其中i最大值为mat.groupCount(); 3.对字符串的分割 Java代码 1.String regEx=":"; 2.Pattern pat = Pattern.compile(regEx); 3.String[] rs = pat.split("aa:bb:cc"); String regEx=":"; Pattern pat = Pattern.compile(regEx); String[] rs = pat.split("aa:bb:cc");  执行后,r就是{"aa","bb","cc"} 如果用正则表达式分割就如上所示,一般我们都会使用下面更简单的方法: Java代码 1.String s = "aa:bb:cc"; 2.String[] rs=s.split(":"); String s = "aa:bb:cc"; String[] rs=s.split(":"); 4.字符串的替换/删除 Java代码 1.String regEx="@+"; //表示一个或多个@ 2.Pattern pat=Pattern.compile(regEx); 3.Matcher mat=pat.matcher("@@aa@b cc@@"); 4.String s=mat.replaceAll("#"); String regEx="@+"; //表示一个或多个@ Pattern pat=Pattern.compile(regEx); Matcher mat=pat.matcher("@@aa@b cc@@"); String s=mat.replaceAll("#");  结果为"##aa#b cc##"     如果要把字符串中的@都给删除,只用要空字符串替换就可以了: Java代码 1.String s=mat.replaceAll(""); String s=mat.replaceAll("");  结果为"aab cc"
老白分享 2012-12-06
  • 打赏
  • 举报
回复
数字前面的字母为一到两个大写字母,[A-Z]{1,2} 数字为一到三个,[1-9]{1,3} 求高手帮忙!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧