Регулярное выражение между двумя символами - последнее появление первого символа и первое появление последнего символа [дубликат]

Нет, программа не гарантируется segfault. Выделение указателя , которому было присвоено недопустимое значение, - это неопределенное поведение , а в стандарте четко указано, что неопределенное поведение не предъявляет никаких требований. Он может завершить выполнение программы, но это не обязательно; он может даже полностью игнорировать ситуацию:

3.4.3 поведение неопределенного поведения

1 при использовании непереносимой или ошибочной программной конструкции или ошибочных данных, для которых это Международный стандарт не налагает никаких требований

2 ПРИМЕЧАНИЕ. Возможное неопределенное поведение варьируется от полного игнорирования ситуации с непредсказуемыми результатами, поведения во время трансляции или выполнения программы документированным образом, характерным для окружающей среды (с или без выдачи диагностическое сообщение), до завершения перевода или выполнения (с выдачей диагностического сообщения).

blockquote>

7
задан Patric 22 February 2012 в 23:25
поделиться

3 ответа

re.findall ваш друг здесь:

>>> import re
>>> sample = "[xy][abc]"
>>> re.findall(r'\[([^]]*)\]',sample)
['xy', 'abc']
17
ответ дан MattH 28 August 2018 в 06:17
поделиться
>>> import re
>>> re.findall("\[(.*?)\]", "[xy][abc]")
['xy', 'abc']
4
ответ дан beerbajay 28 August 2018 в 06:17
поделиться

Я подозреваю, что вы ищете re.findall .

См. эту демонстрацию :

import re
my_regex = re.compile(r'\[([^][]+)\]')
print(my_regex.findall('[xy][abc]'))
['xy', 'abc']

Если вы хотите перебирать совпадения вместо строк соответствия, вы можете посмотреть re.finditer . Для получения дополнительной информации см. Python re docs .

3
ответ дан Wiktor Stribiżew 28 August 2018 в 06:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: