Boost Regex не соответствует - PullRequest
0 голосов
/ 29 июня 2011

У меня есть строка, которой нужно соответствовать:

/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 ]

1 голос
/ 29 июня 2011

Проблема в том, что точка в 2.0 не соответствует сокращению [:word:], поэтому вам нужно включить ее в класс символов.

Вы, вероятно, также должны избежать обратной косой черты.

Попробуйте это:

static const boost::regex lefFilePath("/?(([[:word:].]*)/)*([[:word:].]*)\\.lef");
1 голос
/ 29 июня 2011

В вашей строке 2.0, . отсутствует в классе символов [[: word:]].

Квадратные скобки определяют классы символов и вы можете добавлять символыВы хотите быть включены в этот класс.Поэтому, пожалуйста, попробуйте

[[:word:].]

. обрабатывается буквально внутри класса персонажа, поэтому вам не нужно избегать его там.

...