у меня есть строка
x = Apple>Mango>+Orange
Я хочу вывести ошибку всякий раз, когда программа видит два последовательных символа, и в этом случае больше (>) и плюс (+)
Я пытался использовать метод re.search, но, похоже, я не могу ввести два символа.
import re
x = "Apple>Mango>+Orange"
if re.search('>+', x):
print("error")
else:
print("no error")
Когда я запускаю программу, она всегда выводит ошибку, даже если мой вывод Apple> Mango> Orange, который не должен выводить ошибок, поскольку в нем нет последовательных символов. Похоже, что он обрабатывает только символ больше (>) как есть.
Есть ли лучший способ сделать это, нужна помощь.
Оууу я этого не знал. Зачем мне использовать обратную косую черту () @ggorlen
«Потому что +
имеет особое значение в шаблоне регулярного выражения». Это означает «один или несколько предыдущих символов или групп», поэтому >+
означает «соответствие одному или нескольким символам >
». Пожалуйста, прочитайте базовое руководство по регулярному выражению, и вы увидите это.
Как прокомментировал @ggorlen, при использовании шаблонов регулярных выражений некоторые символы имеют особое значение. +
обозначает как можно больше совпадений, это квантификация совпадения одного или нескольких, и если вы хотите использовать его как литеральную строку, вы должны экранировать его, поставив перед ним обратную реакцию \
:
Таким образом, шаблон для использования будет следующим:
import re
x = "Apple>Mango>+Orange"
if re.search(r'>\+', x): #This pattern matches the literal strings ">+"
print("error")
else:
print("no error")
Верно, но обычно мы голосуем за то, чтобы закрыть подобные вещи как опечатку/тривиальное недоразумение/бесполезность для будущих посетителей. Кроме того, всегда используйте необработанные строки для регулярных выражений: r'>\+'
. Кроме того, стоит отметить, что регулярное выражение здесь не подходит, когда in
обрабатывает подстроки более элегантно и эффективно.
Спасибо, я забыл вставить строку r
aw, которую я всегда использую. Спасибо за содержательный комментарий.
Вы имеете в виду
+
буквально? Вам нужно экранировать его с помощью\+
, потому что+
имеет особое значение в шаблоне регулярного выражения. Также используйтеr"..."
. Или просто не используйте регулярное выражение:">+" in x