我有以下查询& PRCE正则表达式,我希望得到表名。
<div id="wpbody-content">
<div class="wrap">
<h1>All Forms <a class="title-action" href="">Add New</a></h1>
</div>
</div>
期望的结果 FROM student s, #prefix#.sometable, subject s, marks s WHERE ...
(?<=\sfrom)\s+\K(\w*)(?=\s+where)
student s
subject s
我无法弄清楚如何从第一场比赛中提取。
我正在努力找到&amp;在崇高的文本编辑器中替换。
答案 0 :(得分:0)
试试这个:\ s +(\ w * \ s)* s
pcre *myregexp;
const char *error;
int erroroffset;
myregexp = pcre_compile("\\s+(\\w*\\s)*s", PCRE_CASELESS | PCRE_EXTENDED | PCRE_MULTILINE | PCRE_DUPNAMES | PCRE_UTF8, &error, &erroroffset, NULL);
if (myregexp) {
int offsets[2*3]; // (max_capturing_groups+1)*3
int offsetcount = pcre_exec(myregexp, NULL, subject, strlen(subject), 0, 0, offsets, 2*3);
if (offsetcount > 0) {
pcre_get_substring(subject, &offsets, offsetcount, 1, &result);
// group offset = offsets[1*2];
// group length = offsets[1*2+1] - offsets[1*2];
} else {
result = NULL;
}
} else {
// Syntax error in the regular expression at erroroffset
result = NULL;
}
答案 1 :(得分:0)
使用90%的@bobblebubble解决方案,我添加了一些条件来匹配我的情况。它的工作原理,但非常积极,并将编辑器挂在大文件或多个文件上。但我可以忍受我拥有的东西。解决方案:
(?is)(?:\bFROM\b|\G(?!^))(?:[\s,]|#[^\s,]++)*(\b\K(?:\s*(?!WHERE|LEFT\b)\w+){4,})\b(?=.*?\bWHERE\b)