Skip to main content

Regular Expression for inserting codes at the end of a function

This is a regular expression that i used to insert codes at the end of a function, the original code was created for actionscript 3, and you tweak it a  little to match your language, that is if its a C-based language.

reg  = "("+funcName+"\\([\\s\\S]*?\\)[\\s\\S]*?{[\\s\\S]*?)(?=(})[\\s\\S]*?((protected override|private|public) function))";

re = new RegExp(reg);
newCode = oldCode.replace(re, "$1 " + code);

The regular expression is
(yourFunc([\s\S]*?)[\s\S]*?{[\s\S]*?)(?=(})[\s\S]*?((protected override|private|public) function))

Explanation
(yourFunc([\s\S]*?)[\s\S]*?{[\s\S]*?)
First it finds the function named yourFunc followed by (
Then finds the arguements but stop finding mor, the *?, once it finds the first )
Then it continues to find anything, in as3 this is the : thing, and stops after it finds {
Lastly it finds everything after {, literally everything till the last one and to stop it you have to see the next pattern

(?=(})[\\s\\S]*?((protected override|private|public) function))
First it excludes to include on the results the following results it would find, the ?=
This exclusion starts with } followed by anything, \s\S until it finds the next function declaration.

The groupings
We grouped the results into 2 big groups and since we need everything that came before }, we group the regular expression before it into a big group so that once we substitute we could just use $1 to get all of them back.

Its so hard to explain this stuff on writing and i suggest you to just test them and comment if there is something wrong or there are some area where the regular expression could be enhance. Thanks

Comments

Popular posts from this blog

LaMetric Python App

Creating a personal stock app for LaMetric is super simple, all you need is create an account at developer.lametric.com and have an url with your data. Depending on how you want the data to appear, the format should be in json and how it appears in the creation process.

I used appengine to host my data and used the metric data format


Here is the python code
import urllib2 import json # get stocks data using yahoo finance stocks = ['0002.HK', '0005.HK', '0011.HK', '0992.HK', '0066.HK'] url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22" + ("%22%2C%22".join(stocks)) + "%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json" result = urllib2.urlopen(url) data = json.loads(result.read()) # create frames based on the metric data format frames = [] for stock in data['query']['results']['quote']: …