我想使用Regex解析Java中的插入查询。
以下是示例字符串
插入表名称(c1,c2,c3)值(abc,def,ghi),(jkl,mno,pqr)
我想要以下输出:
Group1: table_name
Group2: c1,c2,c3
Group3: abc,def,ghi
Group4: jkl,mno,pqr
我已经尝试过以下正则表达式:
插入([[A-Za-z] [A-Za-z0-9 _-] *)(?:\((。*)\))?\ s * VALUES(\((,)?(。*) \))*
输出是
Group1 : table_name
Group2 : c1,c2,c3
Group3 : (abc,def,ghi) , (jkl,mno,pqr)
Group4 : Empty
Group5 : abc,def,ghi) , (jkl,mno,pqr
请帮助我如何获得期望的结果。
您可以尝试以下正则表达式:
((?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+))|((?<=\\()(\\s*[\\w\\d_,]+\\s*)+(?=\\)))
解释:
(?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+)
比赛[\\w\\d_]+
之间(INSERT\\sINTO\\s)
和\\s+
(?<=\\()(\\s*[\\w\\d_,]+\\s*)+(?=\\))
比赛[\\w\\d_,]+
之间\\(
和\\)
这是一个示例代码:
import java.util.regex.*;
public class HelloWorld {
public static void main(String []args){
String test = "INSERT INTO table_name (c1,c2,c3) VALUES (abc,def,ghi) , (jkl,mno,pqr)";
String regex = "((?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+))|((?<=\\()([\\w\\d_,]+)+(?=\\)))";
Pattern re = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = re.matcher(test);
while (m.find()) {
System.out.println(m.group(0));
}
}
}
输出如下:
table_name
c1,c2,c3
abc,def,ghi
jkl,mno,pqr
输出为 请帮助我如何得到想要的结果。
我有一个声明: 我想创建一个正则表达式,运行会给我以下结果: 基于这个问题和答案,我创建了这样的东西: 然而,我的答案只是: 你能帮我告诉我哪里做错了吗? 我要测试的代码:
我试图在正则表达式中组合if-else,基本上,如果字符串中存在一些模式,则捕获一个模式,如果不存在,则捕获另一个模式。 字符串是:'https://www.searchpage.com/searchcompany.aspx?companyId=41490234 因此,如果在字符串中检测到“?”,则正则表达式应捕获“?”标记之后的所有内容;如果没有,那就从头抓起。 我使用了:
问题内容: 我正在寻找一种解析日志文件的解决方案。看起来像: 可以区分以下元素: 但我仍然不知道该怎么做。简单行不通。 我知道正则表达式具有一般规则,但最合适的是Java。 谢谢 问题答案: 我想出了一种根据可能的/期望的值从与各个字段匹配的块中构建正则表达式的方法。 当然,可以用rex代替rexa或rexi。
Java中的正则表达式问题。我正在从元素href属性中提取Id号。我在一个字符串中有一堆这样的链接: