我正在尝试编写一个正则表达式,该表达式将仅从第一个方括号匹配中删除所有换行符/返回符/空格/制表符。
例如:
def reusable_code(text):
try:
a = int(text.get())
except ValueError:
try:
a = int(str(text.get()) + "0")
except ValueError:
a = 1
invalid += 1
if 0 < a < 10:
pass
else:
rang += 1
理想情况下会返回:
foo\r
{{\n $uppercase($for(Baz, "roar\\n foo {{value}} \\r"))\n }}
{{$uppercase("baz\n") }}
baz
我尝试过这样的事情:
foo\r
{{$uppercase($for(Baz, "roar\\n foo {{value}} \\r"))}}
{{$uppercase("baz\n")}}
baz
但似乎无法正确匹配。
谢谢!
答案 0 :(得分:0)
这应该可以解决问题!根据匹配的括号(带括号的括号和不带括号的括号)将字符串拆分为块的想法。循环浏览您的块,找到带有双括号的块,然后从该块中删除所有换行符。完成循环后,重新组装为字符串。 Voilà。
const newString = str.split(/({{.*?}})/sg).reduce((a, v) =>
(v.includes('{{') ? a + v.replace(/(\r\n|\n|\r)/gm,"") : a+v)
,'');