java - 无法在 Java 中捕获下一行字符
问题描述
我需要通过包含多个 sql 查询的 python 文件进行解析并获取查询的开始和结束位置以仅使用 JAVA 获取查询部分
我正在使用 .contains 函数来检查sql('''
我的查询的开始字符,现在检查我的结束字符,''')
但是在某些情况下,''')
当涉及的变量不应该被检测为结束时,查询之间会出现查询。
像这样的东西:
spark.sql(''' SELECT .......
FROM.....
WHERE xxx IN ('''+ Variable +''')
''')
line.contains(" ''') ")
如果我使用错误,最后一行也会被检测为行尾。
我能想到的就是检查下一行字符作为查询的结尾,因为每个查询都由两个空行分隔。所以尝试了这些if (line.contains(" ''')\n")
,if (line.contains(" ''')\r\n")
但没有一个对我有用。
请让我知道任何其他方式来做到这一点。
请注意,我无权更改查询文件。
谢谢
解决方案
我相信简单的包含不会解决这个问题。
如果要匹配,则必须使用 Pattern \n
。
String query = "spark.sql(''' SELECT .......\n" +
"FROM..... \n" +
"WHERE xxx IN ('''+ Variable +''')\n" +
"''')";
Pattern pattern = Pattern.compile("^spark.sql\\('''(.*)'''\\)$", Pattern.DOTALL);
System.out.println(pattern.matcher(query).find());
输出:
true
Pattern.DOTALL
告诉 Java 也允许点匹配换行符。
推荐阅读
- php - 如何对齐
如果文本之前的长度不同,则元素内联 - php - 在不知道最后修改时间戳的情况下同步数据
- typo3 - TYPO3 GeneralUtility Class 0; 未找到(自己的通用扩展)
- typescript - Prisma 多对多关系:创建和连接
- kotlin - 使用协程和房间数据库android发现重复的类
- c# - C# .NET DocX 将标题插入图像
- reactjs - 反应弹簧过渡设置“无”以在输入中进行转换
- python - 在django的管理面板上添加记录后无法将记录插入数据库
- python - 用分组表格中最常见的值填充缺失值
- php - 对图像中的颜色区域进行分组