На MUD я играю, описания комнат в манеже могут начинаться во многих вариантах. Я пытаюсь написать регулярное выражение, где он только фиксирует описание комнаты моба, а не любые возможные начальные флаги. Это то, что я до сих пор:Совершенствование шаблона регулярного выражения
^\((?:[ACDGHIXRSTUW()]+|\s?\(Angry\))\)?\s?(.*)$
Он работает, по большей части, пока толпа не не имеет стартовый флаг. Вот пример того, что я говорю о относительно вариациях:
(H) (Angry) A mob is here.
(A)(W)(R) A mob is also here.
Another mob is here.
Вот только три различных способа может появиться толпа. По существу, каждая буква в области диапазона может быть флагом, окруженным(). На однобуквенных флажках между пробелами и рядом не существует пробелов. Однако есть пробел до (Angry), за исключением случаев, когда он ведет.
Моя проблема заключается в том, что он не захватывает последнюю моб и не захватывает «(Злой)» в первой толпе. По-моему, я хорошо разбираюсь в регулярном выражении, но я не вижу, что я делаю неправильно, и это даже не самый эффективный способ справиться с этим.
Редактировать: Если это было непонятно, я просто хочу захватить все после последнего) или с самого начала, если флаги отсутствуют.
было бы лучше, если ваша команда '^ (?:. * \)) (?. *) ' –
На самом деле, я изначально пошел с ответом hwnd, но нашел версию Avinash Raj (с небольшой модификацией), чтобы работать лучше! Еще раз спасибо! – Josh
@AvinashRaj хорошо пункт. Благодарю. –