Pyhton RegEx - тест с одной строкой и несколькими - PullRequest
1 голос
/ 18 февраля 2020

re.finditer () выберет (.com), если текст ниже многострочный. Эта же функция не работает, если текст находится в одной строке (var ss). Может кто-нибудь, пожалуйста, помогите мне понять?

s = """  example (.com) 
  w3resource github (.com) 
    stackoverflow (.com) """

# ss = """  example (.com) w3resource github (.com) stackoverflow (.com) """
match = re.finditer(r'\(.+\)',s)
print(match)
for i in match:
    print(i)

1 Ответ

0 голосов
/ 19 февраля 2020

Точка (.) Будет соответствовать любому символу, кроме новой строки, поэтому в первом случае ваш жадный + останавливается, когда находит новую строку, в последнем случае жадный + работает до последней скобки и, следовательно, выполняет только одно совпадение . Так что это означает, что ваше регулярное выражение должно быть изменено, попробуйте заменить его на ниже, так что я написал это так: Внутри круглых скобок сопоставьте буквальную точку (с экранированием здесь) со словом (один или несколько символов), за которым следует закрывающая скобка. , Вывод соответствует ожидаемому

import re
s = """  example (.com) 
  w3resource github (.com) 
    stackoverflow (.com) """

ss = """  example (.com) w3resource github (.com) stackoverflow (.com) """
match = re.finditer(r'\(\.\w+\)',ss) ## changes are done here
print(match)
for i in match:
    print(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...