Повысьте неправильный синтаксис регулярных выражений - PullRequest
0 голосов
/ 30 октября 2010

Я использую библиотеку Boost под c ++ для анализа загрузки текста.Кажется, у меня возникла проблема с этой строкой

text text text Seat 6: player_name (11,111) text text text

Я пытаюсь сопоставить средний бит, номер места может быть от 1 до 9, имя_плеера может быть любым символом a-zA-Z и включают цифры * _.и значение в скобках может быть от 0 до 1 000 000 и должно включать ',' *

У меня есть это регулярное выражение, которое работает в C #, но не будет работать при повышении, оно не соответствует, и я не могу понять, почему, какв моем RegexBuilder он возвращается как правильный:

Seat (?<seat_id>[0-9]): (?<player_name>[A-Z0-9]{1,}) (?<stack_size>\([0-9,]{1,}\))

Есть идеи?Я собираюсь опустить <>, потому что я просто собираюсь сопоставить строку и не беспокоиться об отдельных значениях.

Спасибо, Р. С праздником Хэллоуин.

1 Ответ

0 голосов
/ 30 октября 2010

Вы говорите имя игрока может содержать строчные буквы, но это не то, что говорит ваш код.Код говорит, что player_name может быть только цифрами и прописными буквами.Возможно, в вашем коде C # вы установили флаг, чтобы пропустить чувствительность к регистру при проверке.В Boost это regex_constants::icase;используйте его при создании объекта regex.

Кроме того, помните, что regex_match требует, чтобы выражение соответствовало всей строке ввода.Если вы хотите узнать, соответствует ли регулярное выражение где-либо во входных данных, используйте вместо него regex_search.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...