Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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++ 正则表达式:捕获不带前导字符的字符串_C++_Regex_C++11_Ecmascript 5 - Fatal编程技术网

C++ 正则表达式:捕获不带前导字符的字符串

C++ 正则表达式:捕获不带前导字符的字符串,c++,regex,c++11,ecmascript-5,C++,Regex,C++11,Ecmascript 5,大家晚上好 我的字符串: 4x^2+1.5-x 4x^2-x+1.5 1.5+4x^2-x 我想捕捉那些方程的后面没有“x”或前面没有+/-符号的部分(1.5)。我尝试了这个正则表达式: [^\^](\d+(\.\d+)?)(?!x) 它匹配搜索的部分,但有一个问题:匹配包含前导+/-。我想我可以用lookback来解决这个问题,但是因为我使用的是带有ECMAScript的C++11库,所以这是不受支持的 有人知道怎么解决这个问题吗 谢谢:)根据更多评论重新编写。 好的,根据您评论中提供的附

大家晚上好

我的字符串:

4x^2+1.5-x
4x^2-x+1.5
1.5+4x^2-x
我想捕捉那些方程的后面没有“x”或前面没有+/-符号的部分(1.5)。我尝试了这个正则表达式:

[^\^](\d+(\.\d+)?)(?!x)
它匹配搜索的部分,但有一个问题:匹配包含前导+/-。我想我可以用lookback来解决这个问题,但是因为我使用的是带有ECMAScript的C++11库,所以这是不受支持的

有人知道怎么解决这个问题吗


谢谢:)

根据更多评论重新编写。

好的,根据您评论中提供的附加标准和澄清:

  • 提取后面不带“x^n”的数字 它们可以到处出现,在开始、中间或结束时
  • 他们可以(!)前面有一个“+”/“-”。如果它是一个“+”,则不应捕获它,而应捕获一个“-”。(澄清:需要捕获两者,只需显示
    -
  • 在这些数字之后,也可以有一个“+”或“-”(罕见的情况,但需要注意)
  • 重申:不能使用负面lookbehinds)
(?:[-+]| ^)[0-9.]+(?=[-+]|$)

这将与以下内容匹配(这里没有设置格式和突出显示的好方法,因此我将匹配项包装在
[]
中):

您需要去掉前导的
+

Array
(
    [0] => Array
        (
            [0] => +8.15
            [1] => +1.25
            [2] => 1.9
            [3] => 3
            [4] => -6
            [5] => .7
            [6] => -.75
            [7] => -0.5
            [8] => +0.8
            [9] => +1.45
            [10] => +8.15
            [11] => -1.5
        )
)

你能不能只看第一场比赛,而不是整个比赛?那只包括数字。你能更具体地说明你真正想要什么吗?其中一些4和所有2的后面也没有x、+或-。。你也想配那些吗?你只是想要字符串中的第一个数字吗?啊,很抱歉回答得太晚:)@crayon我想从这些函数中提取常量,后面没有“x^n”的数字。因为它们可以在任何地方出现,在开始、中间或结束时,它们可以在它们前面有一个“+”/“-”。如果它是一个“+”,则不应捕获它,而应捕获一个“-”。在这些数字之后,也可以有一个“+”或“-”(罕见的情况,但需要注意)。@igortandtnik其他数字也可以是浮点数,所以它们也会被捕获(如果这是你的意思,不确定)。谢谢,但问题是我不能使用lookback(见上文),因为ECMAScript不支持它。@TheFunnyTree,但是,你确定ECMAScript不支持lookbehinds吗?我发誓它支持固定宽度的lookbehinds,但不支持可变宽度?编辑:好吧,该死。做了一些谷歌搜索,你是对的。。shady@TheFunnyTree你知道,也许我误解了你的第三点。我的解释是:“不要捕获前面有+的数字,只捕获前面有-”的数字。但现在我在想,也许你想捕获两者,但只想让数字显示操作符,如果它是a-。注意,捕捉“-1”和“+1”,但分别给你“-1”和“1”。我最初的解释正确吗,或者这是你真正想要的吗?第一组很好,如上所述,需要“-”;)但是关于你的[]-大括号的例子:有三个字符串,其中带“+”的数字不会被捕获-为什么?粗体编辑:是的,这就是重点;D@TheFunnyTree啊哈,好的。。重述我的答案。
Array
(
    [0] => Array
        (
            [0] => +8.15
            [1] => +1.25
            [2] => 1.9
            [3] => 3
            [4] => -6
            [5] => .7
            [6] => -.75
            [7] => -0.5
            [8] => +0.8
            [9] => +1.45
            [10] => +8.15
            [11] => -1.5
        )
)