用于提取[]之间内容的正则表达式
Regular expression to extract content between []
我有一个表达式:
[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的regexp,第一个不匹配换行符(由于类似Perl的正则表达式中的.
默认情况下不匹配换行,因此需要指定QRegularExpression::DotMatchesEverythingOption
标志)。第二个,因为它使用了一个否定的字符类,它将匹配[
和下一个最接近的]
之间的任何内容,甚至换行符。
只需尝试以下模式:
\[([^\]]*)
所以$1
包含了预期的结果。
在线演示
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- 正则表达式 获取两个换行符之间的文本
- 正则表达式匹配字符串之间的数字
- 正则表达式使用提升令牌迭代器在单引号和括号之间提取值
- 提升正则表达式 cpp 用于查找 %% 之间的字符串,输出不包括 % 字符本身
- 用于提取[]之间内容的正则表达式
- 正则表达式,获取两个关键字之间的整个字符串
- 如何使用正则表达式查找特殊字符串之间的所有数字
- 使用正则表达式替换oracle中特殊字符之间的字符串
- 在c++中使用正则表达式查找[/和]之间的数字
- c++正则表达式搜索多行注释(在/* */之间)