gpt4 book ai didi

c++ - 提取[]之间内容的正则表达式

转载 作者:行者123 更新时间:2023-11-30 02:32:27 29 4
gpt4 key购买 nike

我有一个表达:

[training_width]:lofmimics

我要提取[]之间的内容,在上面的例子中我要

training_width

我试过以下方法:

QRegularExpression regex("\[(.*?)\]");
QRegularExpressionMatch match = regex.match(strProcessed);
QString textYouWant = match.captured(1);

其中 strProcessed 包含原始文本,但到目前为止它没有起作用。

最佳答案

您的正则表达式的主要问题是反斜杠必须加倍。

所以,有两种解决方案:

  • 使用 .*? 双反斜杠的模式 ("\\[(.*?)\\]")

示例:

QRegularExpression regex("\\[(.*?)\\]");
QRegularExpressionMatch match = regex.match(strProcessed);
QString textYouWant = match.captured(1);
  • 使用否定字符类 [^\\]\\[]* 匹配除 [] 之外的 0+ 个字符:

示例:

QRegularExpression regex("\\[([^\\]\\[]*)\\]");
QRegularExpressionMatch match = regex.match(strProcessed);
QString textYouWant = match.captured(1);

它们之间的区别在于第一个 - 因为 QRegularExpression 实现了类似 Perl 的正则表达式 - 不会匹配换行符(因为 . 在类似 Perl 的正则表达式中不匹配默认情况下为换行符,您需要指定 QRegularExpression::DotMatchesEverythingOption 标志)。第二个,因为它使用否定字符类,将匹配 [ 和下一个最接近的 ] 之间的任何内容,甚至是换行符。

关于c++ - 提取[]之间内容的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36429222/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com