Регулярное выражение не ищет знак "\"
Есть строка, допустим:
text = '''sdfd 9999998\ 7237465 '''
нужно извлечь из него числа 9999998 и 7237465 Между числами может быть либо запятая, либо косая черта "" и после них пробелы. Просто [\d]+ не подходит, так как паршу номера телефонов, чтобы найти телефоны вида "+7(800)5553535\5563636 и добавлять одинаковое начало номера (+7800). На странице могут быть номера с разными кодами.
Регурарное выражение следующего вида:
re.findall(r'[\d]+[,\\][\s]*[\d]+', text)
находит все варианты
text = '''sdfd 9999998,7237465 '''
text = '''sdfd 9999998, 7237465 '''
text = '''sdfd 9999998\ 7237465 '''
кроме (после "\" нет пробела)
text = '''sdfd 9999998\7237465 '''
Как подправить регулярное выражение, чтобы найти числа во всех 4 случаях?
Ответы (1 шт):
Ваше регулярное выражение прекрасно работает. Только не забывайте, что python обрабатывает символ косой черты как знак экранирования и в итоге строка приобретает следующий вид:
'sdfd 9999998\7237465' -> 'sdfd 9999998Ǔ7465'
Создавайте необработанные строки указывая перед открывающей строкой префикс "r":
r'sdfd 9999998\7237465' -> 'sdfd 9999998\\7237465'
Где "\\" экранирование экранирования.