Я пытался заменить регулярное выражение на boost :: regex, но, похоже, это не работает.
Вот выражение регулярного выражения:
(\\w+,\\d+,\\d+,\\d+\tscript\t)(.+)(#)(.+)(\t\\d+(,\\d+)?(,\\d+)?,{)
И форматтер:
$1\"$2\"$3\"$4\"$5
Код: (getInput () возвращает строку с содержимым, которое должно совпадать)
std::string &Preprocessor::preprocess()
{
std::string &tempString = getInput();
boost::regex scriptRegexFullName;
const char *scriptRegexFullNameReplace = "$1\"$2\"$3\"$4\"$5";
scriptRegexFullName.assign("(\\w+,\\d+,\\d+,\\d+\tscript\t)(.+)(#)(.+)(\t\\d+(,\\d+)?(,\\d+)?,{)");
tempString = boost::regex_replace(tempString, scriptRegexFullName, scriptRegexFullNameReplace, boost::match_default);
return tempString;
}
Когда я помещаю следующие тестовые примеры на этот веб-сайт:
alberta,246,82,3 script Marinheiro#bra2 100,{
brasilis,316,57,3 script Marinheiro#bra1 100,{
brasilis,155,165,3 script Orientação divina#bra1 858,{
Вывод сайта правильный:
alberta,246,82,3 script "Marinheiro"#"bra2" 100,{
brasilis,316,57,3 script "Marinheiro"#"bra1" 100,{
brasilis,155,165,3 script "Orientação divina"#"bra1" 858,{
Но с boost :: regex вывод:
alberta,246,82,3 script "Marinheiro#bra2 100,{
brasilis,316,57,3 script Marinheiro#bra1 100,{
brasilis,155,165,3 script Orientação divina#bra1 858,{
Кто-нибудь знает, что я делаю не так?
Спасибо за помощь.
{
?{
- метасимвол регулярного выражения. - person Billy ONeal   schedule 11.08.2013.+
на[a-fA-F0-9_ ]
, это будет работать, но мне нужно добавить поддержку других символов, а выполнение[a-fA-F0-9_áÁàÀâÂãÃéÉíÍóÓôÔúÚüÜçÇ ]
не работает. - person RenatoUtsch   schedule 11.08.2013