Получение пробелов с Boost :: regex - PullRequest
0 голосов
/ 12 октября 2009

У меня есть кусок текста, как:

Имя = Длинный Джон Сильвер; Профессия = повар; Хобби = Пиратство

И используя библиотеку Boost :: regex, я пытаюсь получить значение каждого атрибута, поэтому у меня есть следующее регулярное выражение для имени:

regex(".*Name=([^;$]*).*")

Я понимаю это как "получить все после Name = , пока вы не найдете a; или конец строки". Однако то, что я получаю, используя regex_match, это только "Long", без пробелов. Конечно, я пробовал несколько комбинаций RE, но я не в состоянии разобраться с этим.

Есть подсказка? Приветствия.

1 Ответ

0 голосов
/ 12 октября 2009

Нет, внутри класса символов (в квадратных скобках) $ не имеет особого значения. Он просто совпадает с литералом '$'.

Попробуйте это регулярное выражение:

Name=([^\s;]*)

Класс символов [^\s;] соответствует любому символу , кроме , пробела и точки с запятой. Имя теперь занято в первой группе совпадений.

EDIT:

И если вы хотите сопоставить полное имя «Длинный Джон Сильвер», используйте это регулярное выражение:

Name=([^;]*)
...