提升正则表达式不匹配

时间:2011-06-29 14:00:44

标签: regex boost

我有一个我需要匹配的字符串:

/sw/unicad/C32_SC_12_CLKPBP10_LR/2.0/CADENCE/LEF/C32_SC_12_CLKPBP10_LR_soc.lef

我想出了

static const boost::regex lefFilePath("/?(([[:word:]]*)/)*([[:word:]]*)\.lef");  

然而它并不匹配。我可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您的字符串中有2.0,{[1}}不在[[:word:]]字符类中。

方括号定义了字符类,您可以添加要包含在该类中的字符。所以请尝试

.

[[:word:].] 字面意思在字符类中处理,所以你不需要在那里转义它。

答案 1 :(得分:1)

问题是2.0中的点与[:word:]简写不匹配,因此您需要将其包含在字符类中。

你可能也应该逃避反斜杠。

试试这个:

static const boost::regex lefFilePath("/?(([[:word:].]*)/)*([[:word:].]*)\\.lef");