regex 如何使用正则表达式“匹配”多个项目?[重复]

lzfw57am  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(106)

此问题在此处已有答案

Qt Using QRegularExpression multiline option(3个答案)
7天前关闭。
这是我的短信

common_result = "Devices:\n\thci1\t00:50:B6:80:4D:5D\n\thci0\t00:15:83:15:A2:CB\n";

字符串
我喜欢编写正则表达式来“匹配”hci 0和hci 1部分。
此C++代码仅匹配hcix的第一次出现

QRegularExpression re("hci[0-9]"); // matches first hci1


这个也不行

QRegularExpression re("hci[0-9]/gm");


这应该返回链接字符串

QRegularExpressionMatch match = re.match(common_result);


许多正则表达式的AI生成器都没有帮助,我需要学习如何构建正则表达式来匹配“多个条目”。
你能用所需的正则表达式和每个符号的描述来发布/回答吗?
我确实尝试过使用AI正则表达式生成器-没有。

vuktfyat

vuktfyat1#

它和预期的一样匹配,但是您应该使用globalMatch而不是match
globalMatch方法返回一个QRegularExpressionMatchIterator,你可以这样使用:

QRegularExpressionMatchIterator i = re.globalMatch(common_result);
while (i.hasNext()) {
    QRegularExpressionMatch match = i.next();
    if (match.hasMatch()) {
        QString captured = match.captured(0);
        //.. and do some stuff with that string
    }
}

字符串
请注意,它使用了while循环,因此它将遍历common_result中的所有匹配。

相关问题