Python string.replace equivalent (from Javascript)
javascript, python, regex
Solution
Python's `re.sub` function is just like JavaScript's `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)
And the result:
'HELLOWORLD testing this. {{_thiswillNotMatch}} OKAY'
As for the groups, notice how your replacement function accepts a `match` argument and an `innerCapture` argument. The first argument is `match.group(0)`. The second one is `match.group(1)`.
Problem
I am trying to pick up python and as someone coming from Javascript I haven't really been able to understand python's regex package re What I am trying to do is something I have done in javascript to build a very very simple templating "engine" (I understand AST is the way to go for anything more complex): In javascript: ``` var rawString = "{{prefix_HelloWorld}} testing this. {{_thiswillNotMatch}} \ {{prefix_Okay}}"; rawString.replace( /\{\{prefix_(.+?)\}\}/g, function(match, innerCapture){ return "One To Rule All"; }); ``` In Javascript that will result in: "One To Rule All testing this. {{_thiswillNotMatch}} One To Rule All" And the function will get called twice with: ``` innerCapture === "HelloWorld" match ==== "{{prefix_HelloWorld}}" ``` and: ``` innerCapture === "Okay" match ==== "{{prefix_Okay}}" ``` Now, in python I have tried looking up docs on the re package ``` import re ``` Have tried doing something along the lines of: ``` match = re.search(r'pattern', string) if match: print match.group() print match.group(1) ``` But it really doesn't make sense to me and doesn't work. For one, I'm not clear on what this group() concept means? And how am I to know if there is match.group(n)... group(n+11000)? Thanks!