Как регулярно выражать пустую строку в python?

#python #regex

#python #регулярное выражение

Вопрос:

Я хочу, чтобы это находило пустые теги, вот пример

 txt ="<lol1><><lol2>"
rgx = "<([a-zA-Z_0-9] )>"
print re.findall(rgex, txt)
  

Я получаю это

 ['lol1', 'lol2']
  

Я хочу

 ['lol1', '', 'lol2']
  

Как я могу сделать это с помощью regex?

Ответ №1:

Используйте rgx = "<([a-zA-Z_0-9]*)>"

Ключевым моментом является использование * , что означает «ноль или более из предыдущего», где вы используете , что означает «один или более».

Ответ №2:

нет необходимости в регулярном выражении

 >>> s="txt ="<lol1><><lol2>"
>>> for i in txt.split(">"):
...     if "<" in i:
...        print i[i.find("<") 1:]
...
lol1

lol2
>>> [i[i.find("<") 1:] for i in txt.split(">") if "<" in i ]
['lol1', '', 'lol2']
  

Комментарии:

1. i[i.find("<") 1:] может быть заменен на i.lstrip('<') или i[1:] . if "<" in i может быть устранено или заменено на if i.startswith("<") , что более эффективно и по существу.

2. Я знаю, но это более сложный код, чем приведенный здесь, спасибо.