#python #regex
Вопрос:
У меня есть веревочка:
s = r'"url" : "a", "meta": "b", "url" : "c"'
Что я хочу , так это записать подстроку url: ...
до ,
, так что ожидаемый результат-это список:
[r'"url" : "a"', r'"url" : "b"']
Я использую:
re.findall(r'("url"):(.*),', s)
но все, что он делает, — это возвращает всю строку целиком. Есть ли что-то, что я делаю не так?
Ответ №1:
Ваше последнее «,» было сопоставлено из-за жадного поиска, (.*?) не является жадным. Кроме того, последняя запятая необязательна, поэтому ее следует игнорировать, если она отсутствует
import re s = r'"url":"a","meta":"b","url":"c"' print(re.findall(r'("url"):"(.*?)",?', s))
Ответ №2:
Вы должны избегать ,
, чтобы избежать включения запятой внутри группы. Попробуй это:
re.findall(r'(("url" :[^,]*),*)', s)