使用Python正则表达式提取字段值
这是一个我试图从中获取信息的文件中的两行的示例使用Python正则表达式提取字段值,python,regex,Python,Regex,这是一个我试图从中获取信息的文件中的两行的示例 ... { "SubtitleSettings_REPOSITORY", FieldType_STRING, (int32_t)REPOSITORY}, { "PREFERRED_SUBTITLE_LANGUAGE", FieldType_STRING,SUBTITLE_LANGUAGE}, ... 我想做的是找出这个奇怪数据结构的第三个字段,让给定字符串与第一个字段匹配,即 SubtitleSettings_REPOSITORY => R
...
{ "SubtitleSettings_REPOSITORY", FieldType_STRING, (int32_t)REPOSITORY},
{ "PREFERRED_SUBTITLE_LANGUAGE", FieldType_STRING,SUBTITLE_LANGUAGE},
...
我想做的是找出这个奇怪数据结构的第三个字段,让给定字符串与第一个字段匹配,即
SubtitleSettings_REPOSITORY => REPOSITORY
PREFERRED_SUBTITLE_LANGUAGE => SUBTITLE_LANGUAGE
Python代码中的regx只能处理第二行,不能处理第一行。我怎样才能改进它
import re
...
#field is given a value in previous code, can be "SubtitleSettings_REPOSITORY", or "PREFERRED_SUBTITLE_LANGUAGE"
match = re.search(field+'"[, \t]+(\w+)[, \t]+(\w+)', src_file.read(), re.M|re.I)
return_value = match.group(2)
印刷品
SubtitleSettings_REPOSITORY => (int32_t)REPOSITORY
PREFERRED_SUBTITLE_LANGUAGE => SUBTITLE_LANGUAGE
其中input.txt
包含
{ "SubtitleSettings_REPOSITORY", FieldType_STRING, (int32_t)REPOSITORY},
{ "PREFERRED_SUBTITLE_LANGUAGE", FieldType_STRING,SUBTITLE_LANGUAGE}
细分:
匹配结构为{+space+“+text+”的字符串,并提取文本\{\”(.+)\“
匹配结构为,+text1+,+text2+}的字符串,并提取text2,.+,(.+)\}
(?:\(\w+\))?
,允许(并忽略)括号中的可选单词:
match = re.search(field+'"[, \t]+(\w+)[, \t]+(?:\(\w+\))?(\w+)', line, re.M|re.I)
这样,行匹配,您就可以根据需要获得'REPOSITORY'
。(
和)
不是\w
字符类的成员,因此要在这两种情况下获得匹配,您需要描述包含在参数之间的部分,并使其在模式中成为可选的。
match = re.search(field+'"[, \t]+(\w+)[, \t]+(?:\(\w+\))?(\w+)', line, re.M|re.I)