Jupyter笔记本电脑';s搜索和替换不像regex101';s javascript
我有许多Jupyter笔记本电脑';s搜索和替换不像regex101';s javascript,regex,jupyter-notebook,Regex,Jupyter Notebook,我有许多logger.*()函数,我想在Jupyter笔记本中转换成简单的print()语句。我已经更改了行的开头:logger.*(。现在我需要修复尾部并将”,e更改为”%(e: print("(%s):\n" " Failed to load logger" % (e, )) logger.error("(%s):\n" " Validation Testing errors occurred. '%s'", e, report_
logger.*()
函数,我想在Jupyter笔记本中转换成简单的print()
语句。我已经更改了行的开头:logger.*(
。现在我需要修复尾部并将”,e
更改为”%(e
:
print("(%s):\n"
" Failed to load logger" % (e, ))
logger.error("(%s):\n"
" Validation Testing errors occurred. '%s'",
e, report_file)
logger.critical("(%s):\n"
" Failed to return Parsed Report "
" in debug mode.", e)
logger.critical("(%s):\n"
" Error loading template.", e)
使用Regex101测试我的javascript Regex,我编写了
print\("[\s\S.]*(", e)
但在Jupyter的查找和替换中,这只捕获最多
打印((%s)\n“
搜索和替换预览仅显示一行。尽管如此,regex replace可以跨多行工作。可以按照建议替换示例字符串:
print\("[\s\S]*?", e\)
当对话框显示0与替换项匹配时,替换项仍然有效:
注意:我已经修改了您的搜索模式。修改后的点应该匹配lazy,[\s]*?
以避免匹配过多。此外,我删除了捕获组,看起来您不需要它
更新:事实证明,捕获组需要反转以替换有问题的字符串(xtian对此表示敬意): 搜索:
(print\("[\s\S.]*)", e
替换:
$1 " % (e,
我正在用print语句替换记录器的开始和结束。开始很简单,但结束有常见语法并返回错误匹配。我需要更改匹配结束,条件是它是print语句。奇怪的是,关于匹配计数,您是对的。尽管显示了0个结果,但搜索确实匹配并正确,但只有一次匹配成功删除了文件的其余部分。哈哈。所以Jupyter在多行匹配时失败,并且在匹配计数为0时爆炸。奇怪!@xtian我可以进行多行替换。您是否按照建议使用了惰性匹配运算符?如果需要帮助,请显示更多示例输入。哦!如果您不使用惰性,则匹配将跳到最后。使用惰性,您得到了多个匹配项。出于某种原因,我认为lazy只找到了第一个匹配项。我明白了。现在使用lazy修复程序,我看到捕获组需要反向,搜索:
(print\(“[\s\s.]*)”,e
;替换:$1%(e,
。如果你更新你的答案,我会把它标记为正确的——你还有其他一切。一,我没有得到懒惰的力量,两个0的结果不是零。