如何检查字符串是否与C+中的*前缀*匹配+/增强正则表达式? 给定大量(字符串)和一个正则表达式对象(无论是C++标准库实现还是在Boost中),如何有效地检测每个字符串,它是否是一个有效的匹配前缀?< /P>

如何检查字符串是否与C+中的*前缀*匹配+/增强正则表达式? 给定大量(字符串)和一个正则表达式对象(无论是C++标准库实现还是在Boost中),如何有效地检测每个字符串,它是否是一个有效的匹配前缀?< /P>,c++,regex,stl,prefix,C++,Regex,Stl,Prefix,例如,假设我的正则表达式是^a.*b,那么ac是一个有效的匹配前缀(因为例如超弦acb,acbcb,acbdbebfb…将匹配该正则表达式),但da不是有效的匹配前缀 连接哨兵字符是一种可能的攻击,但它不可靠,因为我无法仅根据长度(而不是取消引用)控制检测到的不匹配 > 我希望强>有一种方法来检查 MatthIORIGRESUTION/COD>对象,或者使用其他内部机制来检测常见的实现(或者至少在VisualC++中,我正在进行)。 这里没有严格的界限,只是一些常识。我有数以百万计的字符串要匹

例如,假设我的正则表达式是
^a.*b
,那么
ac
是一个有效的匹配前缀(因为例如超弦
acb
acbcb
acbdbebfb
…将匹配该正则表达式),但
da
不是有效的匹配前缀

连接哨兵字符是一种可能的攻击,但它不可靠,因为我无法仅根据长度(而不是取消引用)控制检测到的不匹配

<> > <强>我希望<>强>有一种方法来检查<代码> MatthIORIGRESUTION/COD>对象,或者使用其他内部机制来检测常见的实现(或者至少在VisualC++中,我正在进行)。
这里没有严格的界限,只是一些常识。我有数以百万计的字符串要匹配,并且需要它对坐在计算机后面的用户来说是快速的。因此,我可能可以承受2倍的性能,但不是20倍的性能。

为什么不检查一下
^a.*
?@JVApen:因为我无法控制正则表达式中的内容…@TimBiegeleisen:你是说我应该让用户在正则表达式中键入两次,一次用于前缀,一次用于完全匹配?堆栈溢出不是什么“教我如何做X”或“为我做X”之类的地方。而且,如果用一种方式来解释,你的问题太宽泛了,如果按字面意思来解释,本质上是一个是/否的问题。你甚至没有定义什么是“有效的”“意味着,如果不猜测你是否会认为答案是有效的,那是不可能回答的。你介意详细说明你的例子吗?”您说过您只有一个字符串前缀,但后来提到了字符串后缀,而示例并没有更清楚地说明这一点。我认为为字符串添加一些逻辑量词(exists/for all)和名称应该有助于澄清问题。为什么不检查一下
^a.*
?@JVApen:因为我不控制正则表达式中的内容…@TimBiegeleisen:你是说我应该在正则表达式中输入两次用户类型,一个用于前缀,一个用于完全匹配?堆栈溢出不是很严重的问题“教我如何做X”或“为我做X”之类的地方。而且,如果用一种方式来解释,你的问题太宽泛了,如果按字面解释,本质上是一个是/否的问题。而且你甚至没有定义什么是“有效的”“意味着,如果不猜测你是否会认为答案是有效的,那是不可能回答的。你介意详细说明你的例子吗?”您说过您只有一个字符串前缀,但后来提到了字符串后缀,而示例并没有更清楚地说明这一点。我认为为字符串添加一些逻辑量词(exists/for all)和名称应该有助于澄清。