Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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++;?_C++_Regex_Visual Studio 2010_Lookbehind - Fatal编程技术网

C++ 如何在C++;?

C++ 如何在C++;?,c++,regex,visual-studio-2010,lookbehind,C++,Regex,Visual Studio 2010,Lookbehind,我希望执行一个搜索,其中一个字符串(bar)不会立即被两个字符串(foo)或(boo)中的任何一个提前 比如说 foo=bar不应匹配 foo=baz条应匹配 条应匹配 boo=bar不应匹配 我认为regex背后的外观非常适合这一点。但是,当我尝试使用MSVC++中的(?)进行查找时,会遇到一个未处理的异常 在中支持断言吗?它在语法上不同吗?或者有人能帮我编写这个正则表达式或模拟行为吗?研究使用Boost.regex或Boost.Xpressive.MSVC++10的正则表达式实现不完整,而B

我希望执行一个搜索,其中一个字符串(bar)不会立即被两个字符串(foo)或(boo)中的任何一个提前

比如说

foo=bar
不应匹配

foo=baz条
应匹配

应匹配

boo=bar
不应匹配

我认为regex背后的外观非常适合这一点。但是,当我尝试使用MSVC++中的
(?)进行查找时,会遇到一个未处理的异常


在中支持断言吗?它在语法上不同吗?或者有人能帮我编写这个正则表达式或模拟行为吗?

研究使用Boost.regex或Boost.Xpressive.MSVC++10的正则表达式实现不完整,而Boost的(对于正则表达式和Xpressive)则不完整。两者都有各自的优缺点

Xpressive由于编译时正则表达式编译而更快,并提供更好的正则表达式语法检查,但它倾向于创建大量符号,因此您至少可以看到几兆字节增加的调试信息

正则表达式速度很快,不需要在正则表达式的构造中使用运算符。但是,它确实需要在库中进行链接


存在其他的C++ ReX引擎,可以执行Perl正则表达式,但是使用Boost是非常无痛的,而且我没有任何问题,不管我投给它。

< P>不太多的正则表达式支持无限的查找,但是它们都支持无限的前瞻性。 您可以反转字符串,使用前瞻,然后再次反转。但是,这对于大型字符串来说是昂贵的

你可以使用有界的lookbehind。一些正则表达式风格支持lookbehind,如果它们知道lookbehind的确切长度或最大长度的话


您可能会发现整个字符串中没有Lookback,然后手动放弃一些匹配项。如果不存在重叠问题,您可以将Lookback更改为可选捕获组,然后放弃捕获组匹配的匹配项。替换肯定Lookback时,可选捕获组不必是可选的,也不必是capturing(nor集团).

如果可以使用lookbehind,您将如何编写正则表达式?我只是不确定您的定义,所以我想看看您将如何编写。perl正则表达式引擎是否支持lookbehinds?PHP中的AFAIR PCRE不支持无限lookbehind。正则表达式和Xpressive都支持lookbehind,但我不确定它们各自的限制是什么。T他的邮件列表可能会对你有所帮助。