文档章节

正则表达式替换字符

stormxue
 stormxue
发布于 2017/04/20 15:13
字数 207
阅读 4
收藏 0

场景:

       代码中一段生成创建临时表的sql,会将number类型的创建成超过38位最大值,比如number(39,4)。问题原因无法找到,估计是跟数据库有关系,所以现在通过正则查,一但发现有违规数据,就改变。

测试代码:

package snippet;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Snippet {
	public static void main(String[] args) {
		//错误sql
		String a = "create table RepSysNav006_zhangsh(FDETAIL NUMBER(68,2112),FDETAILORSUM NUMBER(40),FKEYCODE CHAR(4))";
		//Pattern pattern = Pattern.compile("(NUMBER[(](39|[4-9][0-9]|\\d{3,})(,\\d+)?[)])");
		//Pattern pattern = Pattern.compile("(NUMBER[(](39|[4-9][0-9]|\\d{3,})(,\\d+)?[)])|(NUMBER[(]\\d+,(39|[4-9][0-9]|\\d{3,})[)])");
		Pattern pattern = Pattern.compile("NUMBER[(]((39|[4-9][0-9]|\\d{3,})(,\\d+)?|\\d+,(39|[4-9][0-9]|\\d{3,}))[)]");
		Matcher matcher = pattern.matcher(a);
		StringBuffer sb = new StringBuffer();
		while(matcher.find()){
			String d= matcher.group().replaceAll("39|[4-9][0-9]|\\d{3,}", "38");
			matcher.appendReplacement(sb, d);
		}
		matcher.appendTail(sb);
		System.out.println(sb.toString());
	}
}

最终代码:

 

© 著作权归作者所有

共有 人打赏支持
stormxue
粉丝 0
博文 4
码字总数 600
作品 0
扬州
程序员
私信 提问
java字符串的替换replace、replaceAll、replaceFirst的区别详解

如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式! 不多解释,看代码: String s = "my.test.txt";System.out.println(s.repl...

linin630
2015/01/20
0
1
Scala学习之字符串篇(六):使用正则表达式

在Scala中你只需要在正则表达式字符串后边加上一个".r"就可以使用正则表达式了。 下面介绍正则表达式常用的两个匹配方法findFirstIn和findAllIn。 方法findFirstIn可以匹配到第一个符合正则表...

阿拉德大陆的魔法师
2016/12/08
65
0
Java正则系列: (1)入门教程

本文简要介绍Java的正则表达式及其实现方式,并通过实例讲解正则表达式的具体用法。 1. 正则表达式 1.1. 简介 正则表达式(Regular Expression), 简称 正则, 也翻译为 正规式, 用来表示文本搜...

renfufei
2018/01/03
0
0
正则表达式应用替换/删除/校验/测试技巧

正则表达式应用替换/删除/校验/测试技巧 实例目录 【1】 正则表达式应用——替换指定内容到行尾 【2】 正则表达式应用——数字替换 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】...

sinat_34719507
2017/01/11
0
0
Java学习日常:正则表达式

这篇博客介绍了强大的正则表达式,和Java对它的支持。 一、正则表达式简介 在平时,我们总是通过各种操作来找到文本里的对应字符串。输入我们想要的字符串,然后按下确定进行查找。但很多时候...

Happioo
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程

并发与并行 并发指的是同时应对多个事件的能力,并行指的是同时做多件事的能力。 位级并行:32位计算机能够同时处理32位数运算,而8位计算机却要进行多次运算。 指令级并行:表面上看cpu是串...

春哥大魔王的博客
35分钟前
3
0
js数组遍历和对象遍历

数组遍历 for for(var i=0,len=arr.length;i<len;i++){console.log(arr[i]);} forEach - ES5语法,性能比for弱,不能使用break终止循环,不能使用return arr.forEach(function(item,inde......

祖达
54分钟前
3
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
今天
2
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部