【发布时间】:2017-09-03 13:15:38
【问题描述】:
我正在尝试使用look-behind来检查前面的元素是空格还是字符串开头:
(?<=^|\s)
这在regex101 上运行良好,风格设置为PHP,但在boost(我相信是Perl)下会出现语法错误。我认为是^ 导致了这个问题。我找不到任何文档来说明为什么会这样,我们将不胜感激。
【问题讨论】:
-
你的问题我不清楚,请提供一些样本和预期结果-HTH ;)。
-
libboost 支持多种正则表达式,你确定选择好的吗?不管怎样,libpcre 和 libboost perl 兼容的正则表达式风格(比如这个)之间存在细微差别。顺便说一句,一个很好的解决方法是
(?<!\S)来处理这两种情况。对于更复杂的情况,没有什么禁止写(?:(?<=sub1)|(?<=sub2)|...) -
您是否使用常规字符串文字声明模式?使用双反斜杠。如果是原始字符串文字,请使用单个。
"(?<=^|\\s)"或R"((?<=^|\s))" -
感谢您的帮助。似乎你不能直接在后面使用 or 语句。 Casimir:你的解决方案是我最终的结果,谢谢!只是看起来有点啰嗦。