python - 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 = '';
解决方案
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
推荐阅读
- html - 为了使文本在图像上居中,为什么必须将容器设置为位置:相对?
- python - Python Selenium SyntaxError:无法在“文档”上执行“评估”:字符串'//div [包含(@class,'product-card__subtitle')
- javascript - Flagging cells in grid (Minesweeper in plain JavaScript + p5.js framework)
- html - 粘性元素在 Flex 框中不起作用
- python - 朴素递归比记忆递归更快
- python - 如何在 Python 中使用 Selenium 从在滚动时添加 div 的网页中抓取数据?
- elasticsearch - Elasticsearch 无法在 Ubuntu 20.04 中启动服务
- python - 使用 GPU 的 Tensorflow 比预期的要慢
- multithreading - 主题:如何删除静态生命周期要求
- python - 如何解决“NotImplementedError”