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!

Original source