Синтаксис регулярного выражения для “соответствия ничто”?

Remove all breakpoints in android studio

Нажмите на красный значок, который находится ниже, чтобы остановить отладку. там вы увидите окно, в котором можно удалить все точки останова.

70
задан Adam Liss 30 December 2018 в 15:23
поделиться

6 ответов

Ничего не должно совпадать:

re.compile('$^')

Поэтому, если вы замените regexp1, regexp2 и regexp3 на '$ ^', будет невозможно найти совпадение. Если вы не используете многострочный режим.


После некоторых тестов я нашел лучшее решение

re.compile('a^')

Невозможно сопоставить и выйдет из строя раньше, чем предыдущее решение. Вы можете заменить a любым другим символом, и всегда будет невозможно сопоставить

101
ответ дан 24 November 2019 в 13:21
поделиться

(?!) всегда не должно соответствовать. Это отрицательный прогноз нулевой ширины. Если то, что указано в скобках, совпадает, то все совпадение не выполняется. Учитывая, что в нем ничего нет, он не сможет найти ничего (включая ничего).

34
ответ дан 24 November 2019 в 13:21
поделиться

Может быть '. {0}' ?

4
ответ дан 24 November 2019 в 13:21
поделиться

Чтобы сопоставить пустую строку - даже в многострочном режиме - вы можете использовать \ A \ Z , поэтому:

re.compile('\A\Z|\A\Z*|\A\Z+')

Разница в том, что \ A и \ Z - это начало и конец строки , тогда как ^ и $ могут соответствовать началу / концу lines , поэтому $ ^ | $ ^ * | $ ^ + потенциально может соответствовать строке, содержащей символы новой строки (если флаг включен).

И не найти ничего (даже пустого строка), просто попытайтесь найти содержимое перед началом строки, например:

re.compile('.\A|.\A*|.\A+')

Поскольку символы не могут стоять перед \ A (по определению), совпадение всегда не выполняется.

15
ответ дан 24 November 2019 в 13:21
поделиться

Вы можете использовать
\ z ..
Это абсолютный конец строки, за которым следуют два любых символа

If + или ] * прикреплен к концу, это все еще работает, отказываясь соответствовать чему-либо

1
ответ дан 24 November 2019 в 13:21
поделиться

Или используйте некоторое понимание списка, чтобы удалить бесполезные записи регулярного выражения, и соедините их, чтобы собрать их все вместе. Что-то вроде:

re.compile('|'.join([x for x in [regexp1, regexp2, ...] if x != None]))

Не забудьте добавить несколько комментариев рядом с этой строкой кода: -)

0
ответ дан 24 November 2019 в 13:21
поделиться
Другие вопросы по тегам:

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