Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt C++;QRegExp解析字符串_C++_Regex_Qt - Fatal编程技术网

C++ Qt C++;QRegExp解析字符串

C++ Qt C++;QRegExp解析字符串,c++,regex,qt,C++,Regex,Qt,我有字符串str。我想得到两个字符串(“+”和“-”): 我得到的输出: "+asdf" "+zxcv" "-tyupo" "+qwerty" "-yyuu" "+llad" 如果我用*替换\\w,则输出为: "+asdf+zxcv-tyupo+qwerty-yyuu oo+llad dd ff" 您的regexp过多: [\\+\\-](\\w+) \______/\____/ ^ ^--- any amount of alphabetical characte

我有字符串
str
。我想得到两个字符串(“+”和“-”):

我得到的输出:

"+asdf" 
"+zxcv" 
"-tyupo" 
"+qwerty" 
"-yyuu" 
"+llad" 
如果我用
*
替换
\\w
,则输出为:

"+asdf+zxcv-tyupo+qwerty-yyuu oo+llad dd ff"
您的regexp过多:

[\\+\\-](\\w+)
\______/\____/
    ^     ^--- any amount of alphabetical characters
    ^--- '+' or '-' sign
因此,您捕获的是
+
/
-
符号,以及紧跟其后的任何单词。如果只想捕获
+
/
-
符号,请使用
[+-]
作为正则表达式

编辑:

要获取包含空格的字符串,需要

QRegExp rx("[+-](\\w|\\s)+");

您可以使用以下正则表达式:

[+-]([^-+]+)

正则表达式细分:

  • [+-]
    -要么是
    +
    要么是
    -
  • ([^-+]+)
    -与
    -
    +
    以外的一个或多个符号相匹配的捕获组

QRegExp rx(“[+-]”)就足够了。是的,我需要检查+或-并获取选项。对不起,我更改了文本。看到输出(我需要)我想它会像
qregexprx(“[\\+\\-][a-z]+”)一样是的,为这次考试工作谢谢!。QRegExp rx(“[+-]”(\\w+);输出:“+asdf”“+zxcv”“-tyupo”“+qwerty”“-yyuu”“+llad”。如果您只想
+
-
的话,我需要使用空格,例如“+yyuoo”@Šerg,
QRegExp rx([+-])
。如果您需要捕获其他内容,请编辑您的问题以包含所需的输出。此正则表达式效率非常低。与量词交替使用涉及冗余回溯。
QRegExp rx("[+-](\\w|\\s)+");
[+-]([^-+]+)