Найти - Пользователи
Полная версия: детский вопрос по re
Начало » Python для новичков » детский вопрос по re
1
Florenzo
учу регулярки:

 >>>
>>> import re
>>> text2 = "John will be out from 25.02.2018 till 10.3.2018"
>>> datepattern2 = re.compile('\d+.\d+.\d+')
>>> for z3 in datepattern2.finditer(text2):
...          print(z3.group())
...
25.02.2018
10.3.2018
======================
так дает обе даты - все хорошо
и если в группах, т.е.
re.compile('(\d+).(\d+).(\d+)')
, то тоже дает

 >>>
>>> datepattern3 = re.compile('([0-9]).([0-9]).([0-9])')
>>> for z3 in datepattern3.finditer(text2):
...          print(z3.group())
...
2.201
0.3.2
======================

а так почему-то обрезает, почему???

 >>>
>>> datepattern3 = re.compile('([0-9]{2}).([0-9]{2}).([0-9]{4})')
>>> for z3 in datepattern3.finditer(text2):
...          print(z3.group())
...
25.02.2018
======================
>>> datepattern3 = re.compile('[0-9]{2}.[0-9]{2}.[0-9]{4}')
>>> for z3 in datepattern3.finditer(text2):
...          print(z3.group())
...
25.02.2018
=======================
а так дает только 1-ю дату, но почему не дает 2-ю дату???

(python 3.6.4 (x64), win7 (x64))
Romissevd
Здесь ищешь только один символ в группе
 datepattern3 = re.compile(r'([0-9]+).([0-9]+).([0-9]+)')
for z3 in datepattern3.finditer(text2):
    print(z3.group())

Здесь задал жестко количество {2}
 datepattern3 = re.compile('([0-9]{2}).([0-9]{1,2}).([0-9]{4})')
for z3 in datepattern3.finditer(text2):
    print(z3.group())
datepattern3 = re.compile('[0-9]{2}.[0-9]{1,2}.[0-9]{4}')
for z3 in datepattern3.finditer(text2):
    print(z3.group())
py.user.next
Florenzo
так дает обе даты - все хорошо
Точка означает любой символ всегда. Точка совпадёт как с точкой, так и с цифрой, так и с буквой.
  
>>> import re
>>> 
>>> re.findall(r'\d.\d', 'abc 123 def 4a5 ghi 6.7 jkl')
['123', '4a5', '6.7']
>>>
Чтобы точку из метасимвола превратить в простой символ, её надо проэкранировать.
  
>>> import re
>>> 
>>> re.findall(r'\d\.\d', 'abc 123 def 4a5 ghi 6.7 jkl')
['6.7']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB