Python Regex для поиска строки в двойных кавычках внутри строки - PullRequest
17 голосов
/ 01 марта 2012

Код в Python с использованием регулярных выражений, который может выполнять что-то вроде этого

Input: Regex should return "String 1" or "String 2" or "String3" 
Output: String 1,String2,String3

Спасибо

1 Ответ

46 голосов
/ 01 марта 2012

Вот все, что вам нужно сделать:

def doit(text):      
  import re
  matches=re.findall(r'\"(.+?)\"',text)
  # matches is now ['String 1', 'String 2', 'String3']
  return ",".join(matches)

doit('Regex should return "String 1" or "String 2" or "String3" ')
# result:
'String 1,String 2,String3'

Как отметил Ли-Аунг Ип: (я почти цитирую)

.+? - это «нежадная» версия .+. Это заставляет регулярное выражение соответствовать наименьшему количеству символов, которое он может, вместо наибольшего количества символов, которое он может. Жадная версия .+ выдаст строку 1" or "String 2" or "String 3; нежадная версия .+? 'String 1, String 2, String3'

Кроме того (Йохан говорит снова), если вы хотите принять пустые строки, измените .+ на .*. Звезда означает ноль или более - плюс означает, по крайней мере, один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...