如何解决为mariadb查询获取正确的REGEX表达式
查询:
SELECT
t1.package
FROM
(
SELECT 'openstack-neutron-12.1.0-2.el7ost.noarch' AS package UNION
SELECT 'openstack-neutron-12.1.1-1.el7.noarch' AS package UNION
SELECT 'openstack-neutron-common-12.1.0-2.el7ost.noarch' AS package UNION
SELECT 'openstack-neutron-common-12.1.1-1.el7.noarch' AS package
) AS t1
WHERE t1.package REGEXP "[^openstack-neutron-´digit]"
需要:我想要第一行,我只希望主中子封装,所以我认为如果我用下一个数字过滤第二个hifen,则模式将是可以的。
这是mariabd。
有人可以帮忙吗?
编辑:'((?i)openstack-neutron-api-(?-i))\\d.*'
。
这直接在sql客户端上有效,但是我在使用PHP时遇到问题(真的很奇怪)
我真的不知道REGEX中的字符根据语言的不同而变化很大。
谢谢
解决方法
您要查找的是第二个数字后的一位或更多-。您需要像这样使用+:
SELECT
t1.package
FROM
(
SELECT 'openstack-neutron-12.1.0-2.el7ost.noarch' AS package UNION
SELECT 'openstack-neutron-12.1.1-1.el7.noarch' AS package UNION
SELECT 'openstack-neutron-common-12.1.0-2.el7ost.noarch' AS package UNION
SELECT 'openstack-neutron-common-12.1.1-1.el7.noarch' AS package
) AS t1
WHERE t1.package REGEXP "openstack-neutron-[0-9]+"
,
我建议:
^
#include <QProcess>
#include <QString>
CO_set_bitrate(char const *can_device) //can_device for example "can0"
{
QProcess set_bitrate;
QStringList bitrate_args;
QStringList stop_args;
QStringList start_args;
char const *can_bitrate = "500000"; //Set Bitrate
stop_args.clear();
stop_args<<"stop"<<can_device<<".service";
start_args.clear();
start_args<<"start"<<can_device<<".service";
bitrate_args.clear();
bitrate_args<<"link"<<"set"<<can_device<<"up"<<"type"<<"can"<<"bitrate"<<can_bitrate;
//Stop the CAN-Service
set_bitrate.start("systemctl",stop_args,QIODevice::WriteOnly);
set_bitrate.waitForFinished(-1);
//Set Bitrate
set_bitrate.start( "ip",bitrate_args,QIODevice::WriteOnly); //Starts execution of command
set_bitrate.waitForFinished(-1);
//Restart CAN-Service
set_bitrate.start("systemctl",start_args,QIODevice::WriteOnly);
set_bitrate.waitForFinished(-1);
}
确保字符串以模式开头。您只需要根据您的描述寻找一位数字即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。