java - 如何用以下更改替换以下代码。请看代码片段
问题描述
我想用 secondPattern 更改 firstPattern。当我使用模式匹配器/String.replaceAll()
我使用以下逻辑来替换
System.out.println(fileContent.replaceAll(firstPattern, secondPattern));
我收到以下错误=
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)
这是因为在第一个模式中我使用了“{”和“}”大括号。所以它抛出一个错误。不知道如何更换这些。
String firstPattern = "text.append(\" where \");\r\n" +
" text.append(\"ObjId\" + \" = \");\r\n" +
" text.append(getObjId().toString());\r\n" +
"\r\n" +
" text.append(\" and \");\r\n" +
" text.append(\" LastCngDTime = \");\r\n" +
"\r\n" +
" try {\r\n" +
" tempString = dbaExecObj.Get_DataConverter()\r\n" +
" .SmsTimeStampToDBMSTimestampString(LastCngDTime,\r\n" +
" \"-WQ\");\r\n" +
" } catch (Exception e) {\r\n" +
" throw new SmsTntResult(new SmsSystemResult(logger,\r\n" +
" SmsCsvWhoAmI.getMyFullyQualifiedMethodName(),\r\n" +
" SmsTntCodes.DATA_TYPE_CONVERSION_ERROR,\r\n" +
" SmsSystemResult.ERROR));\r\n" +
" }\r\n" +
"\r\n" +
" text.append(tempString);";
String secondPattern = "text.append(\" where \");\r\n" +
" text.append(\"ObjId\" + \" = \");\r\n" +
" text.append(getObjId().toString());\r\n" +
"\r\n" +
" text.append(\" and \");\r\n" +
" text.append(\" LastCngDTime = \");\r\n" +
"\r\n" +
" try {\r\n" +
" tempString = dbaExecObj.Get_DataConverter()\r\n" +
" .SmsTimeStampToDBMSTimestampString(LastCngDTime,\r\n" +
" \"-WQ\");\r\n" +
" } catch (Exception e) {\r\n" +
" throw new SmsTntResult(new SmsSystemResult(logger,\r\n" +
" SmsCsvWhoAmI.getMyFullyQualifiedMethodName(),\r\n" +
" SmsTntCodes.DATA_TYPE_CONVERSION_ERROR,\r\n" +
" SmsSystemResult.ERROR));\r\n" +
" }\r\n" +
"\r\n" +
" text.append(\"CAST(\");" +
" text.append(tempString);" +
" text.append(\" AS datetime)\");";
String fileContent = new Scanner(new File(filePath)).useDelimiter("\\A").next();
System.out.println(fileContent.replaceAll(firstPattern, secondPattern));
解决方案
推荐阅读
- python - BeautifulSoup 可以访问字符串索引,但我的程序不能
- nginx - 如何将内容添加到 nginx 上的每个站点和页面
- twilio - 如何为 Holdmusic Twimlet 设置正确的 S3 存储桶名称
- wordpress - 如何让 wordpress 了解我的自定义主题不是子主题?
- python - Django - 在包含表单列表的视图的 post 方法中获取已发布表单的 id
- sparql - 用于在 SPARQL 中转换为 URI 的转义字符串
- pandas - Pandas 已安装,但 IDLE 显示未找到模块 - 与其他模块位于同一目录中
- swift - 显示登录用户独有的收藏夹
- javascript - 从组件的根级别设置状态 2 层深
- c# - 如何使 OnGUI 窗口阻止鼠标点击?