#regex
#регулярное выражение
Вопрос:
У меня есть строка, подобная
deleted - the status was being deleted and got it back with it.
для которого я хочу использовать регулярное выражение. Здесь фиксированными элементами являются слова status
и deleted
. Между ними может быть другой текст, и мне нужно это игнорировать.
Теперь мое регулярное выражение (?<=status).*
Это занимает все после ‘status’, но мне нужно игнорировать все от ‘status’ до ‘deleted’ и взять остальное.
Например, ввод:
deleted - the status was being deleted and got it back with it.
Желаемый результат:
and got it back with it.
Комментарии:
1. Добро пожаловать в SO. Пожалуйста, уточните, что вы делаете и в чем заключается ваш вопрос. В вашем сообщении неясно, чего вы пытаетесь достичь.
2. Совершенно ясно, что вам нужно
status.*?deleteds (.*)
или один из его вариантов.(?<=status.*?deleteds ).*
может сработать для вас.
Ответ №1:
Вы можете использовать
status.*?deleteds (.*)
Посмотрите эту демонстрацию регулярных выражений. Вам нужно получить доступ к значению группы 1, чтобы получить необходимый результат.
Или, если в вашей среде поддерживается шаблон поиска бесконечной ширины, используйте
(?<=status.*?deleteds ).*
Посмотрите эту демонстрацию регулярных выражений.
ПРИМЕЧАНИЕ: Если пробелы после deleted
необязательны, используйте s*
вместо s
.
Подробные сведения
(?<=
— начало положительного поиска, который соответствует местоположению в строке, которому непосредственно предшествует его шаблон:status.*?deleted
—status
, затем любые нулевые или более символов, отличных от символов разрыва строки, как можно меньше, а затемdeleted
s
— один или несколько символов пробела)
— конец просмотра.*
— ноль или более символов, отличных от символов разрыва строки, как можно больше
Ответ №2:
Я думаю, вы ищете что-то вроде этого:
/(?P<status>[a-z] ) -. (?P=status) (.*)/
Ответ №3:
Вы можете использовать позитивный взгляд назад, как вы делаете сейчас, но вам нужно добавить все ваши требования (дополнительный текст и разделитель deleted
).:
(?<=status.*deleted).*
Должно дать вам то, что вы хотите.