用法:
QRegExp qreg_exp(“[^A-Za-z0-9\u4e00-\u9fa5]”); //字母和中文和数字以外的字符
//^顶在前面 表示除。。。之外
// A-Z 代表大写 a-z代表小写字符 0-9表示数字 \u4e00-\u9fa5表示所有中文 直接连在一起表示&& 在最前面加个^ 表示除这些字符以外的字符
QString new_str = name.remove(qreg_exp);
也可以使用单字符
比如QString qreg_exp_str = “[,,/^ -]”; 就是选择, ,/ ^-这几个单字符
这里要注意 (空格字符别放在开始和结尾 别贴近"[“和”]" 要不然识别不了这个字符) 和编码 基本正则表达基本用法就好了
下面是特殊字符本身在正则表达式的应用 比如 -和^出现要替换成 -和^
正则表达式匹配
QString strIPExp=QString::fromLocal8Bit(“IPv4 地址 . . . . . . . . . . . . : [\d.]*”);
QRegExp ipRegExp(strIPExp, Qt::CaseInsensitive);
ipRegExp.indexIn(msg);//从指定字符串中查找匹配字符串位置
ipRegExp.cap(0);//取出匹配到的第一个字符串
示例:
//查找出ipv4地址
void MainWindow::on_pushButton_clicked()
{
/*
"Windows IP 配置\r\n\r\n\r\n以太网适配器 以太网:\r\n\r\n
媒体状态 . . . . . . . . . . . . : 媒体已断开连接\r\n 连接特定的 DNS 后缀
. . . . . . . : \r\n\r\n无线局域网适配器 本地连接* 1:\r\n\r\n 媒体状态
. . . . . . . . . . . . : 媒体已断开连接\r\n 连接特定的 DNS 后缀
. . . . . . . : \r\n\r\n无线局域网适配器 本地连接* 10:\r\n\r\n 媒体状态
. . . . . . . . . . . . : 媒体已断开连接\r\n 连接特定的 DNS 后缀 . . . . . . . :
\r\n\r\n
无线局域网适配器 WLAN:\r\n\r\n 连接特定的 DNS 后缀 . . . . . . . : \r\n IPv6 地址 . . . . . . . . . . . . : 2409:8a3c:f4a:a420:3048:de20:5bb8:d6ea\r\n 临时 IPv6 地址. . . . . . . . . . : 2409:8a3c:f4a:a420:985d:eca:5dc0:1b17\r\n
本地链接 IPv6 地址. . . . . . . . : fe80::3048:de20:5bb8:d6ea%17\r\n IPv4 地址 . . . . . . . . . . . . : 192.168.1.8\r\n 子网掩码 . . . . . . . . . . . . : 255.255.255.0\r\n 默认网关. . . . . . . . . . . . . : fe80::1%17\r\n 192.168.1.1"
*/
QString ip ="";
QString msg="";
QProcess cmd;
cmd.start("ipconfig");
cmd.waitForReadyRead();
msg = QString::fromLocal8Bit(cmd.readAllStandardOutput()).trimmed();
int index =msg.indexOf("WLAN:");
if(index!=-1)
{
msg = msg.mid(index);
}
QString strIPExp=QString::fromLocal8Bit("IPv4 地址 . . . . . . . . . . . . : [\\d.]*");
QRegExp ipRegExp(strIPExp, Qt::CaseInsensitive);
if (ipRegExp.indexIn(msg) != -1) {
ip = ipRegExp.cap(0);
ip = ip.right(ip.size()-QString::fromLocal8Bit("IPv4 地址 . . . . . . . . . . . . : ").size());
}
qDebug()<<ip;
}
更多推荐
qt之QString正则表达式
发布评论