Регулярное выражение не ищет знак "\"

Рейтинг: -1Ответов: 1Опубликовано: 01.03.2023

Есть строка, допустим:

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'

Где "\\" экранирование экранирования.