我正在尝试编写一个小的python脚本来本地化源代码文件。
在源文件中有一些字符串,例如:
title: "Warning".localized()
我尝试做的是每当找到附加.localized()
时在引号之间提取字符串。
匹配此字符串的正则表达式为:regex = re.compile('([^"]*).localized\(\)', re.DOTALL)
匹配有效,因为我得到以下输出:
...
./testproject/test1.swift
.localized()
.localized()
./testproject/test2.swift
...
但我不能得到的是引号之间的字符串。
python脚本:
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 :-(
答案 0 :(得分:0)
将我的评论转换为答案。
您可以使用此模式:
regex = re.compile(r'"([^"]*)"\.localized\(\)')
并使用捕获的组#1。 [^"]*
匹配任何不是双引号的char中的0个或更多。
或使用周围:
regex = re.compile(r'(?<=")([^"]*)"(?="\.localized\(\)'))