Regex Boost/Perl正则表达式查找包含或

Regex Boost/Perl正则表达式查找包含或,regex,boost,pcre,Regex,Boost,Pcre,我试图使用look back检查前面的元素是空格还是字符串开头: (?<=^|\s) (?您应该能够在boost中的lookbehinds中使用|,但每个选项必须具有相同(固定)的长度 ^是一个断言,因此长度为0 \s只匹配一个字符,因此其长度为1 PCRE放宽了这一限制:每个备选方案都必须是固定长度的,但它们现在不一定需要等长 以下是表格中的相关行: (a) 尽管PCRE2中的lookback断言必须匹配固定长度的字符串,但lookback断言的每个可选分支都可以匹配不同长度的字符

我试图使用look back检查前面的元素是空格还是字符串开头:

(?<=^|\s)
(?您应该能够在boost中的lookbehinds中使用
|
,但每个选项必须具有相同(固定)的长度

  • ^
    是一个断言,因此长度为0
  • \s
    只匹配一个字符,因此其长度为1
PCRE放宽了这一限制:每个备选方案都必须是固定长度的,但它们现在不一定需要等长

以下是表格中的相关行:

(a) 尽管PCRE2中的lookback断言必须匹配固定长度的字符串,但lookback断言的每个可选分支都可以匹配不同长度的字符串。Perl要求它们都具有相同的长度

实际上,如果您尝试,Perl将输出以下错误:

$perl-e'm#(?:(?您应该能够在boost中的lookbehinds中使用
|
,但有一个限制,即每个备选方案必须具有相同的(固定)长度

  • ^
    是一个断言,因此长度为0
  • \s
    只匹配一个字符,因此其长度为1
PCRE放宽了这一限制:每个备选方案都必须是固定长度的,但它们现在不一定需要等长

以下是表格中的相关行:

(a) 尽管PCRE2中的lookback断言必须匹配固定长度的字符串,但lookback断言的每个可选分支都可以匹配不同长度的字符串。Perl要求它们都具有相同的长度

实际上,如果您尝试,Perl将输出以下错误:


$perl-e'm#(?:(?你的问题我不清楚,请提供一些示例和预期结果-HTH;)。可能相关的问题是:;)。libboost支持几种正则表达式风格,你确定要选一种好的吗?无论如何,libpcre和libboost-perl兼容正则表达式风格之间有一些小的区别(比如这个)。一个好的解决方法是处理这两种情况的
(?)。对于更复杂的情况,没有任何东西禁止编写
(?:(?是否使用常规字符串文字声明模式?请使用双反斜杠。如果是原始字符串文字,请使用单反斜杠。
”(?谢谢你的帮助。似乎你不能直接在look behinds中使用或语句。Casimir:你的解决方案就是我的结局,所以谢谢!只是似乎有点冗长。你的问题我不清楚,请提供一些示例和预期结果-HTH;)。可能相关的问题是:;).libboost支持多种正则表达式风格,您确定要选择好的吗?无论如何,libpcre和libboost与perl兼容的正则表达式风格之间有一些细微的区别(就像这一个)。作为一个附带的解决方案,可以是处理这两种情况的
(?)。对于更复杂的情况,没有任何东西禁止编写
(?):(?是否使用常规字符串文字声明模式?请使用双反斜杠。如果是原始字符串文字,请使用单反斜杠。
)(?谢谢你的帮助。似乎你不能直接在look behinds中使用或语句。Casimir:你的解决方案就是我的结局。谢谢!只是看起来有点啰嗦。谢谢所有的信息谢谢所有的信息