У меня есть поля, которые содержат данные в следующих возможных форматах (каждая строка - это разные возможности):
AAA - Something Here
AAA - Something Here - D
Something Here
Обратите внимание, что первая группа букв (AAA) может иметь разную длину.
Я пытаюсь захватить «Что-то здесь» или «Что-то здесь - D» (если оно существует) с помощью PCRE, но я не могу заставить регулярное выражение правильно работать во всех трех случаях. Я пробовал:
- (.*)
, который отлично работает для случаев 1 и 2, но, очевидно, не 3;
(?<= - )(.*)
, который также отлично работает для случаев 1 и 2;
(?! - )(.+)| - (.+)
работает для случаев 2 и 3, но не 1.
Я чувствую, что нахожусь на грани этого, но не могу взломать его.
Заранее спасибо за вашу помощь.
Edit: Я понял, что мне неясны мои требования. Если в конце стоит «- D» (буква в данных может быть произвольной, но должна быть только одним символом), это также необходимо зафиксировать.