#python #regex
Вопрос:
Я пытаюсь извлечь подстроку из большой строки, которая соответствует моему шаблону.
text = 'This is a large subsring. bla bla bla AND www.dumbweb.com/Dumbo and www.otherLinks.com...'
pattern = 'dumbweb.com'
здесь я пытаюсь найти строку, которая соответствует pattern
theLink = re.findall(pattern, text)
print(theLink) //output: dumbweb.com
но я могу найти только точный текст, с которым я ищу, я пытаюсь разделить всю строку пробелом
желаемый результат:
theLink //www.dumbweb.com/Dumbo
я устал искать подобный вопрос, но я не могу сформулировать его правильно, я даже посмотрел регулярное выражение Python, все еще не в состоянии достичь того, что я ищу.
Комментарии:
1. Вы буквально упомянули разделение по пространству, так что попробуйте:
print([k for k in text.split() if 'dumbweb.com' in k])
Ответ №1:
Вы можете рассмотреть такой подход:
import re
text = 'This is a large subsring. bla bla bla AND www.dumbweb.com/Dumbo and www.otherLinks.com...'
pattern = 'dumbweb.com'
rex = re.compile(r'b' r'S*' re.escape(pattern) r'S*')
print (rex.findall(text))
Выход:
['dumbweb.com/Dumbo']
Объяснение:
re.compile(...)
: компилирует заданный шаблон строкового регулярного выраженияr'b'
: Граница словr'S*'
: Сопоставьте 0 или более символов без пробеловre.escape(pattern)
: Выполните экранирование регулярного выражения данной строкиr'S*'
: Сопоставьте 0 или более символов без пробелов
Ответ №2:
Вы могли бы попробовать это:
[^ ]*dumbweb.com[^ ]*
Обратите внимание, что в регулярном выражении a .
соответствует любому символу. Вам нужно использовать .
, чтобы соответствовать только буквальному периоду
Ответ №3:
Попробуйте это:
re.search('dumbweb.com[S]*', text).group()
# matches your string followed by any character but white space
Ответ №4:
Вероятно, не самое чистое решение:
text = 'This is a large subsring. bla bla bla AND www.dumbweb.com/Dumbo and www.otherLinks.com...'
pattern = 'dumbweb.com'
for word in text.split():
if word.find(pattern) > 0:
print(word)
Ответ №5:
Ваш шаблон должен быть
pattern = "www.dumbweb.com[^\s]*"
Это приведет к печати ссылки, начиная с www.dumbweb.com пока не останется свободного места
Комментарии:
1. Это также будет соответствовать
wwwwdumbweb$com
2. не могли бы вы, пожалуйста, проверить мой новый ответ, все ли в порядке?