Я пытаюсь написать крошечный скрипт python для локализации файлов исходного кода.Python regex get string между кавычками
В исходных файлах есть некоторые строки, такие как этот:
title: "Warning".localized()
То, что я пытаюсь сделать, это извлечения строки между кавычки всякий раз, когда я нахожу .localized()
прилагается.
Регулярное выражение для сопоставления этой строки является: regex = re.compile('([^"]*).localized\(\)', re.DOTALL)
Совпадение работает, потому что я получаю следующий результат:
...
./testproject/test1.swift
.localized()
.localized()
./testproject/test2.swift
...
Но то, что я не получаю строку между кавычками.
Питон скрипт:
import os, re, subprocess
import fnmatch
def fetch_files_recursive(directory, extension):
matches = []
for root, dirnames, filenames in os.walk(directory):
for filename in fnmatch.filter(filenames, '*' + extension):
matches.append(os.path.join(root, filename))
return matches
regex = re.compile('([^"]*).localized\(\)', re.DOTALL)
for file in fetch_files_recursive('.', '.swift'):
print file
with open(file, 'r') as f:
content = f.read()
# e.g. "Warning".localized(),
for result in regex.finditer(content):
print result.group(0) // output = '.localized()'
print result.group(1) // output = '' empty :-(
Регулярное выражение должно быть, вероятно, больше, как '/ "([^"] +)" \ локализованы \ (\)/'Вы не позволяя для' «' между «Предупреждением» и «.локализованным». И поскольку вы используете звездочку, группа 1 будет пустой. – Biffen
Попробуйте: regex = re.compile (r '"([^"] *) "\. Localized \ (\)')' и использовать захваченную группу # 1 – anubhava
Также для дальнейшего использования этот сайт отлично подходит для тестирования Python regex: http://pythex.org – idjaw