Python string.replace等价物(来自Javascript)
我试图学习python,作为一个来自Javascript的人,我还不能真正理解python的正则表达式包re 我试图做的是用javascript构建一个非常简单的模板“引擎”(我知道AST是解决更复杂问题的方法): 在javascript中:Python string.replace等价物(来自Javascript),javascript,python,regex,Javascript,Python,Regex,我试图学习python,作为一个来自Javascript的人,我还不能真正理解python的正则表达式包re 我试图做的是用javascript构建一个非常简单的模板“引擎”(我知道AST是解决更复杂问题的方法): 在javascript中: var rawString = "{{prefix_HelloWorld}} testing this. {{_thiswillNotMatch}} \ {{prefix_Okay}}"; rawString.replace( /\
var rawString =
"{{prefix_HelloWorld}} testing this. {{_thiswillNotMatch}} \
{{prefix_Okay}}";
rawString.replace(
/\{\{prefix_(.+?)\}\}/g,
function(match, innerCapture){
return "One To Rule All";
});
在Javascript中,将导致:
“一对所有的测试规则。{{{u thiswillNotMatch}}一对一
规则所有“
该函数将被调用两次,方法是:
innerCapture === "HelloWorld"
match ==== "{{prefix_HelloWorld}}"
以及:
现在,在python中,我尝试在re包上查找文档
import re
我试着按照以下思路做一些事情:
match = re.search(r'pattern', string)
if match:
print match.group()
print match.group(1)
但这对我来说真的没有意义,也不起作用。首先,我不清楚这个group()概念是什么意思?我如何知道是否有匹配。组(n)。。。组(n+11000)
谢谢 Python的
re.sub
函数与JavaScript的String.prototype.replace
类似:
import re
def replacer(match):
return match.group(1).upper()
rawString = "{{prefix_HelloWorld}} testing this. {{_thiswillNotMatch}} {{prefix_Okay}}"
result = re.sub(r'\{\{prefix_(.+?)\}\}', replacer, rawString)
结果是:
'HELLOWORLD testing this. {{_thiswillNotMatch}} OKAY'
对于组,请注意替换函数如何接受
match
参数和innerCapture
参数。第一个参数是match.group(0)
。第二个是match.group(1)
我认为您希望替换所有出现的{{prefix_*}},其中*基本上是任何东西。如果是这样的话,这段代码就很简单
pattern = "\{\{prefix_.*?\}\}"
re.sub(pattern, "One To Rule All", rawString)
干杯 如果您将多次使用相同的模式(例如在循环中),那么这会更好:
pattern = re.compile("\{\{prefix_.*?\}\}")
# ... later ...
pattern.sub("One To Rule All", rawString)
谢谢你,这很有道理。第2组、第3组等是什么?或者是未定义的组。@JohnTomson:
。组(n)
是第n个捕获组。
pattern = re.compile("\{\{prefix_.*?\}\}")
# ... later ...
pattern.sub("One To Rule All", rawString)