Почему мое регулярное выражение не может найти результат?

#python #regex

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

Вопрос:

Данные выглядят следующим образом:

 post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'
  

и вот мой код для задачи:

 p1 = re.compile(r"post date")
m1 = p1.search(postline) 
if m1:
    month = re.search(r'post date="([dW] )"', postline).group(1)
  

Ответ №1:

Вы ищете двойные qoutes " тогда как в вашем примере используются одиночные qoutes ' .

 re.search(r'post date="([dW] )"'
                      ^         ^
  

.

 post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'
          ^      ^
  

Редактировать: Проблема больше не в регулярном выражении, а в вашем python. Вот пример:

 import re
postline = "post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'"
pattern = "post date='([dW] )'"

p1 = re.compile(pattern)
date = p1.search(postline).group(1) 
print date
  

Выводит:

 2008-7
  

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

1. Я изменил код следующим образом: month = re.search(r»post date ='([d W] )'», postline).group(1), но он все еще не работает: (

Ответ №2:

Ваша дата всегда будет в формате YYYY-M ? Если да, создайте свой шаблон соответствующим образом? Этот шаблон допускает YYYY-M или YYYY-MM :

 >>> import re
>>> postline = "post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'"
>>> pat = r"post date='(d{4}-d{1,2})'"
>>> re.search(pat, postline).group(1)
'2008-7'