【发布时间】:2012-03-02 15:00:12
【问题描述】:
我想要一个正则表达式来匹配一个序列。 我希望正则表达式匹配的序列是 NP,因此要确保在 N 之后有一个 P 并且在 P 之前有一个 N
1) NPNPNPNP = 正确
2)NPNPPNP = 不正确
对不起,我又错过了第三场比赛的问题
3)NNNPNPNNP = 正确 所以可以有很多个 N,但在 N 的末尾必须有一个 P 跟上面一样
但我认为我的正则表达式不正确,谁能告诉我哪里出错了?
std::string a ("NPNPNPPN");
boost::regex const string_matcher("\(NP\)*");
if(boost::regex_match(a,string_matcher))
{
DCS_LOG_DEBUG("Yes it Matches ");
}
else
{
DCS_LOG_DEBUG("No it does not Match");
}
【问题讨论】:
-
i do not think my regular expression is correct为什么?你的哪个测试失败了?为什么要逃避(和)? -
对于空字符串
""是成功还是失败,下面的答案各不相同。它是哪一个?你可以在序列之前或之后有非NP字母,还是字符串只能由NP对组成? -
是的,我认为我不需要逃避
(和)现在考虑@LightnessRacesinOrbit -
空的
""并不总是成功,有时订单可能是 NPPN 在这种情况下我需要发出错误信号@MikeRyan -
我认为您没有理解我的第一个问题——
""成功或失败。通过在您的原始代码中使用*,您暗示它应该成功,但您的作品表明您没有考虑这种情况。 NPPN 不是空字符串的示例。至于我的第二个,我问的是“123NPNP”应该成功还是失败?
标签: c++ regex string boost match