我有一个我需要匹配的字符串:
/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");
然而它并不匹配。我可以帮忙吗?
答案 0 :(得分:1)
您的字符串中有2.0
,{[1}}不在[[:word:]]字符类中。
方括号定义了字符类,您可以添加要包含在该类中的字符。所以请尝试
.
[[:word:].]
字面意思在字符类中处理,所以你不需要在那里转义它。
答案 1 :(得分:1)
问题是2.0
中的点与[:word:]
简写不匹配,因此您需要将其包含在字符类中。
你可能也应该逃避反斜杠。
试试这个:
static const boost::regex lefFilePath("/?(([[:word:].]*)/)*([[:word:].]*)\\.lef");