我正在从一个(编码糟糕的)python文件中提取结果,我正在查看的示例如下:
if (name == "wheat"):
return "WHEAT"
if (name == "enchanted bread") or (name == "ebread") or (name == "bread"):
return "ENCHANTED_BREAD"
if (name == "hay bale") or (name == "haybale"):
return "HAY_BLOCK"
if (name == "enchanted hay bale") or (name == "ebale") or (name == "ehayblock"):
return "ENCHANTED_HAY_BLOCK"
if (name == "tightly-tied hay bale") or (name == "tightly tied hay bale"):
return "TIGHTLY_TIED_HAY_BALE"
我希望使用此信息制作一个.json并行数组,并按照以下格式“ENCHANTED_BREAD”对其进行索引:[“ENCHANTED BREAD”、“ebread”、“BREAD”]
我试图创建一个正则表达式来查找返回值的所有别名。 到目前为止,我考虑使用以下正则表达式,因为我已经提取了返回值并将它们组织为键:
=="(.*?)"
但它的问题是,我无法将值“分组”以将多个值分配给单个键。由于与同一个键对应的值位于同一行上,因此这可能是正确的方法
我可以在regex中使用什么来对每行的regex匹配进行分组
谢谢你的帮助
或者,您可以使用or(
|
)运算符交错来自name
捕获和return
捕获的结果。为了让正则表达式捕获返回值的别名和返回字符串本身,您可以使用[^"]+
将任何不是"
的字符分组一次或多次我没有运行此命令来检查语法,但可能类似于:
说明:
\w
等同于[a-zA-Z0-9_]
(即字母数字或下划线)\s
是空白因此,我们匹配
if
,然后尽可能多地(至少一次)匹配组与(name == "some_string")
和可选的or
,然后匹配换行符,然后是空格,直到返回语句,当我们匹配组的返回值时对于这个正则表达式提供的每个匹配,您应该得到这两个组,一个包含所有可能的有效输入,另一个包含输出
希望这能让你找到一个完整的解决方案
文档链接:https://docs.python.org/3/howto/regex.html
相关问题 更多 >
编程相关推荐