java后台怎么利用Pattern提取所需字符
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要讲解了"java后台怎么利用Pattern提取所需字符",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java后台怎么利用Pattern提取
千家信息网最后更新 2025年01月22日java后台怎么利用Pattern提取所需字符
这篇文章主要讲解了"java后台怎么利用Pattern提取所需字符",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java后台怎么利用Pattern提取所需字符"吧!
写在处理问题的前面
由于项目功能迭代,导致原来的页面当中ID命名规则,与当前命名规则不同(ps:既然要用到原来的东西,为什么在设计的时候没有考虑到兼容的问题,无语),所以需要将原来的所有ID提取出来。
遇到的问题,如何提取?
查找了许多方法之后,感觉使用Pattern提取比较符合需求。于是开始尝试。
1.首先进行简单测试
String str = "{abc{def: }deftfha }";Pattern p=Pattern.compile("\\{(\\w+)\\: ");Matcher m=p2.matcher(str2); while(m.find()){ System.out.println(m.group(1)); }
好的没问题,提取正常。于是将所需提取的一部分字符串拿出来进行测试。
2.项目内容测试
String str = "\"EquipmentID\":\"SSC_FZ_DQ#MJ23JZ_FZ_CZ_CZGX#YL#SBBM\",";Pattern p=Pattern.compile("\"EquipmentID\":\"(\\w+)\",");Matcher m=p2.matcher(str2); while(m.find()){ System.out.println(m.group(1)); }
问题来了,没有提取到任何内容。那试试只提取EquipmentID当中的字符呢,测试没问题。问题就在正则匹配上了。(\\w+)只适用于截取文字部分,改为(.*),ok,可以正常截取SSC_FZ_DQ#MJ23JZ_FZ_CZ_CZGX#YL#SBBM这部分了。
3.进行实操
建立数据库连接。
public class CopyOracle2MySQL1 { /** * 源数据库,目标数据库的连接配置 */ private final String DEST_MYSQL_JDBC_URL = ; private final String SOURCE_JDBC_URL = ""; private final String SOURCE_JDBC_USER = ""; private final String SOURCE_JDBC_PASSWORD = ""; public void startImport() throws Exception { // 创建到两个数据库的连接 Class.forName("com.mysql.jdbc.Driver"); //Class.forName("oracle.jdbc.driver.OracleDriver"); Connection connDest = DriverManager.getConnection(DEST_MYSQL_JDBC_URL); //Connection connSource = DriverManager.getConnection(SOURCE_JDBC_URL, SOURCE_JDBC_USER, SOURCE_JDBC_PASSWORD); try { // 人工输入各表名(需要保证顺序,以确保有外键的表在主表之后插入数据) importTable(connDest, "APP_WGADDATA","qtsc_jk_scjkzttxx"); } finally { // 自动关闭数据库资源 connDest.close(); //connSource.close(); } } private void importTable(Connection connDest, String oracleTableName,String mysqlTableName) throws Exception { Statement stmt = null; try { stmt = connDest.createStatement(); String mysqlSql = "select ZTTNR from qtsc_jk_scjkzttxx qjs where qjs.ZTTID = '0284fcbdcdbd4da3bdef78ed769515c6'"; String mysqlSql1 = "select ZTTNR from qtsc_jk_scjkzttxx"; ResultSet rs = stmt.executeQuery(mysqlSql1); MapsbbmMap = new HashMap(); while(rs.next()){ String zttnr = rs.getString(1); //System.out.println(zttnr); Pattern p = Pattern.compile("\"EquipmentID\":\"(.*)\",\"UnitName\""); Matcher m=p.matcher(zttnr); while(m.find()){ System.out.println(m.group(1)); } //System.out.println(sbbmMap); } // 先计算目标数据库的PreparedStatement的SQL语句z ResultSetMetaData rsmd = rs.getMetaData(); rs.close(); }catch (Exception e){ e.printStackTrace(); } finally { if(stmt != null) { stmt.close(); } } } public static void main(String[] args) throws Exception { CopyOracle2MySQL1 ins = new CopyOracle2MySQL1(); ins.startImport(); }
测试结果发现,在所有符合规则的前期下进行提取,发现,自动匹配到了最后一个","UnitName",很显然又是规则的问题,于是将(.)改为(.?)问题解决。
附:JAVA Pattern正则获取大括号中内容
利用正则表达式获取字符串中想要的值:
获取符串场景: 你好呀(嘻嘻)
我需要获取"嘻嘻" 该如何获取呢?
1.通过正则表达式获取:
String str = "你好呀(嘻嘻)"; Pattern p = Pattern.compile("\\(([^\\)]+)"); Matcher matcher = p.matcher(str); if (matcher.find() && matcher.groupCount() >= 1){ System.out.println(matcher.group(1)); }
2.通过字符截取获取:
String str = "你好呀(嘻嘻)"; String xixi = str.substring(str.indexOf("(") + 1, str.indexOf(")")); System.out.println(xixi);
感谢各位的阅读,以上就是"java后台怎么利用Pattern提取所需字符"的内容了,经过本文的学习后,相信大家对java后台怎么利用Pattern提取所需字符这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
问题
字符
数据
数据库
内容
测试
后台
嘻嘻
正则
规则
好呀
学习
字符串
目标
表达式
项目
不同
东西
两个
人工
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全和端口关系
ftp的服务器地址是
数据库的设计思路
停车场系统服务器会卡死
广东省网络安全宣传周首页
首都网络安全日需要门票吗
学院网络安全生产法新闻稿
福建省中小学网络安全直播厅
全国网络安全挑战赛强网杯
互联网 算科技创新吗
昆明学校开展网络安全教育
校园卡软件开发合同
网络安全专业技术知识
中职软件开发学哪些科目
网络安全卫士怎么处理
服务器硬盘都是只读状态
赤峰定制软件开发
如何插入两个数据库
学校网络安全防护管理制度
宜昌专业的软件开发方案
数据库安全验证方式
软件开发战略合作协议书模板
镇江手机软件开发系统
欧洲专利数据库检索
计算机网络安全 防火墙
软件开发面试的流程
华硕软件开发工资
银月网络安全团队
网络安全专业技术知识
用户的手机号码存在数据库中