Есть ли способ получить всю строку (включая другой знак, например -,)
перед данным конкретным знаком (в данном случае знаком «@»)?
Пример домен \ имя пользователя @ abc
Я хочу получить " домен \ имя пользователя ", поэтому я использую выражение (.+)@, и оно работает.
но в то же время будут входные данные без @abc только "домен \ имя пользователя", поэтому разделять его не нужно, (. +) Будет работать
Но не могу понять выражение регулярного выражения, которое может соответствовать обоим,
- Домен \ username@abc.com return Домен \ username
- Домен \ возвращение имени пользователя Домен \ имя пользователя
В ТО ЖЕ ГРУППЕ
Мое решение состоит в том, чтобы создать выражение if-else перед выражением regex, чтобы оно могло решить, содержит ли строка знак @, поэтому я могу применять разные выражения для обеих ситуаций.
Я пытался
- Используйте или (|), чтобы конец строки был @ или границей слова: (. +) (@ | \ B) -> всегда совпадает с \ b, поэтому не будет останавливаться на знаке '@'
- Сделать @ знак совпадения 0 или 1 раз: (. +) @ {0,1} - >> Я не понимаю, почему это не работает. Но это не работает в regex101.com, оно всегда будет соответствовать полной строке