首页 > 解决方案 > if/else 语句仅在找到匹配项时运行

问题描述

我一直试图弄清楚这一点,但我不知所措。我也尝试在其他版块和帖子中寻找解决方案,但实际上我找不到的任何东西都涵盖了我正在寻找的东西。

我正在编写一个脚本来逐行解析 JavaScript 并存储在数组中找到的变量名。由于 Javascript 可以被格式化,我用这个正则表达式构建了一系列 OR 语句,这些语句提取了我需要的所有内容。

r"var\s(.*?)\s\=\s|var\s(.*?)\=|var\s(.*?)\=\s|var\s(.*?)\s\=|var\s(.*?)\;"

这匹配最多 5 个组的所有内容。

我遇到的问题是,如果找到某个匹配组 (1-5),我希望运行某些代码。

这就是我到目前为止所拥有的。我读到了关于执行“不是无”来检查未找到的空匹配项的信息,但这在我的情况下不起作用。

我该怎么做呢?

当前代码片段:

for line in Converted_Text.splitlines():
    
    VarName_Regex = r"var\s(.*?)\s\=\s|var\s(.*?)\=|var\s(.*?)\=\s|var\s(.*?)\s\=|var\s(.*?)\;"
    VarName_Match = re.search(VarName_Regex, line, re.MULTILINE)
    

    if VarName_Match.group(1) is not None:
        VarName = VarName_Match.group(1)
    elif VarName_Match.group(2) is not None:
        VarName = VarName_Match.group(2) 
    elif VarName_Match.group(3) is not None:
        VarName = VarName_Match.group(3)
    elif VarName_Match.group(4) is not None:
        VarName = VarName_Match.group(4)
    elif VarName_Match.group(5) is not None:
        VarName = VarName_Match.group(5)

测试代码:

var array=['cat','food','bowl'];

"The array[0] wants array[1]";
"Please put array[1] in her array[2].";

var blah, joke, meh;

var num1= 1;
var num2 =2;
var sum = num1+num2;
var blah, meh;

window.print(sum);

var falsenum = '';

标签: pythonarraysregex

解决方案


if VarName_Match.group(1):
   VarName = VarName_Match.group(1)
elif VarName_Match.group(2):
   VarName = VarName_Match.group(2)
elif VarName_Match.group(3):
   VarName = VarName_Match.group(3)
elif VarName_Match.group(4):
   VarName = VarName_Match.group(4)
elif VarName_Match.group(5):
   VarName = VarName_Match.group(5)
else:
   VarName = None

推荐阅读