我有一列包含XML的列,我想使用正则表达式根据条件列出ID。
我的XML数据的一部分已复制到outfile:
<definitions>^M\
<definition id=
我想列出一个基于xmldata的列,该列中有<definitions>
后跟<definition id="1"
到目前为止,我已经尝试了正则表达式的不同组合,但没有成功
where <col> REGEXP '.*<definitions>\r.\s+<definition id="1"'
答案 0 :(得分:2)
请注意,REGEXP
可以在字符串中的任何位置进行匹配,而不必在开头(与LIKE
不同)进行匹配,因此您不需要在开头.*
。
8.x之前的MySQL版本不支持类似Perl的速记类,并且\s
在此处无效。在MySQL 8.x中,ICU regex库支持\s
。
您可以在任何MySQL中使用:
where col REGEXP '<definitions>[[:space:]]+<definition id="1"'
或者,如果元素之间可能缺少空格:
where col REGEXP '<definitions>[[:space:]]*<definition id="1"'
包含[[:space:]]
个POSIX字符类的[:space:]
括号表达式与任何空白字符匹配,并且+
对字符的1个或多个重复进行计算,而*
匹配0个或多个他们。