我试图通过QRegularExpression获取不同捕获组中xml标记的所有属性。我使用与标记匹配的正则表达式,并设法获得包含属性值的捕获组,但使用量词,我只获得最后一个。
我用这个正则表达式:
<[a-z]+(?: [a-z]+=("[^"]*"))*>
我想通过这段文字得到“a”和“b”:
<p a="a" b="b">
以下是代码:
const QString text { "<p a=\"a\" b=\"b\">" };
const QRegularExpression pattern { "<[a-z]+(?: [a-z]+=(\"[^\"]*\"))*>" };
QRegularExpressionMatchIterator it = pattern.globalMatch(text);
while (it.hasNext())
{
const QRegularExpressionMatch match = it.next();
qDebug() << "Match with" << match.lastCapturedIndex() + 1 << "captured groups";
for (int i { 0 }; i <= match.lastCapturedIndex(); ++i)
qDebug() << match.captured(i);
}
和输出:
Match with 2 captured groups
"<p a=\"a\" b=\"b\">"
"\"b\""
是否可以使用量词*
获取多个捕获组,或者让我使用Q正则表达式匹配迭代器
在字符串文字上使用特定的正则表达式进行迭代?
此表达式可能有助于您简单地捕获这些属性,并且它不受左右限制:
([A-z]+)(=\x22)([A-z]+)(\x22)
此图显示了表达式的工作原理,如果您想知道,您可以在此链接中可视化其他表达式:
如果您想为它添加额外的边界,您可能希望这样做,您可以进一步扩展它,可能类似于:
(?:^<p )?([A-z]+)(=\x22)([A-z]+)(\x22)
const regex = /(?:^<p )?([A-z]+)(=\x22)([A-z]+)(\x22)/gm;
const str = `<p attributeA="foo" attributeB="bar" attributeC="baz" attributeD="qux"></p>`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
我有一个这样的目标字符串:(然而嵌套在实践中可能非常深) 预期结果将是: 小组: 我在c#regex中找不到任何东西可以这样做嵌套捕获。有可能吗? 编辑: 我想我把我的例子简化得太多了,这使答案模糊不清。我需要以递归的方式捕获,因为我需要括号内的内容: 预期结果将是: 和
目前我有这个阵列= 条件: 如果每个嵌套数组index2都相同,那么我想用[0.0 1.0,1.0 2.0,2.0 3.0,3.0 4.0] = [1.0,3.0,5.0,7.0]来求和 我想要的最终结果:[[“efg”, [1.0, 3.0, 5.0, 7.0], “测试”]] 有什么方法或建议来获得这个结果吗?
我有一些数组,如果它们包含类似的值,我想返回这些数组的名称。 我有我的变量,它有多个数组,名字要么是,要么是,要么是。包含的只是变量中某些数组中相同的值。我需要返回数组中包含、和的数组的名称。因此,对于这个示例,我需要返回:。 通过这个函数抛出它们时,我得到一个错误。如何获取返回的数组?
该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/Elasticsearch/reference/5.3/nested.html 我的索引和这个差不多。唯一的区别是user.first和user.last是关键字类型,所以我可以对它们使用过滤器。 在两种情况下,我应该使用什么查询来获取与上面数组匹配的文档(正好是两个项,一个项是John Sm
问题内容: 我刚刚升级到Elastic Search 1.5.0,到目前为止,尽管嵌套查询可以正常工作,但我无法使inner_hits与嵌套过滤器一起使用。 比方说,我要检索的内部嵌套对象 演员 一中 的电影 对象。 当我运行以下 嵌套查询时 : 语法1 =>我得到了这里记录的inner_hits ,这很好。 但是当我尝试使用 嵌套过滤器 进行等效查询时: 语法2 =>我得到以下解析错误 Quer
问题内容: 我有一个嵌套的数组,我想在其中显示结果的子集。例如,在下面的数组中,我想遍历嵌套array [1]中的所有值。 我试图使用foreach函数,但似乎无法正常工作。这是我的原始语法(尽管我意识到这是错误的)。 我试图避免对键是否与我要搜索的键相同的变量进行比较,即 有任何想法吗? 问题答案: 如果您知道嵌套数组中的级别数,则可以简单地执行嵌套循环。像这样: 如果您不知道数组的深度,则需要