首先搜索函数定义,然后在每个匹配项上,根据函数名称插入一个参数。
/\b(function\s+set([A-Z]\w*))\b\s*\(\)/g
此模式将为您匹配function
-keyword 和组 1 中的函数名称,以及组 2 中函数名称的驼峰式部分。
/([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))/g
此模式将查找构成驼峰式大小写的大写/小写序列之前的最后一个字母。
你没有指定你将使用什么语言,所以这里是一个使用 Python 的演示:
import re
pattern1 = re.compile(r'\b(function\s+set([A-Z]\w*))\b\s*\(\s*\)')
pattern2 = re.compile(r'([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))')
def fix_setters(code):
def replacer(match):
var_name = pattern2.sub(r'\1_', match.group(2)).lower()
return "%s($%s)" % (match.group(1), var_name)
return pattern1.sub(replacer, code)
最后一行(“ return pattern1.sub(replacer, code)
”)使用回调来生成要替换的文本。大多数语言都应该有类似的功能。
Python(3.0 版之前)使用模数运算符 (" %
") 进行格式化,类似于sprintf
C 语言。
例子:
>>> s = """\
... public function setUserName() {
... blaha
... }
... """
>>> print s
public function setUserName() {
blaha
}
>>> print fix_setters(s)
public function setUserName($user_name) {
blaha
}
>>>
更多信息:.NET - 如何将“大写”分隔的字符串拆分为数组?