使用 python 来测试正则前瞻 后瞻,但是怎么都没有像官网说的那样。
题目
解析 html onclick=""里面的字符串,返回调用的函数名和参数list
表达式
根据文档写的表达式: https://docs.python.org/2/lib...
(?<=s*javascripts*:s*)([w]+)((.+))(?=s*;.*)
代码
def parse_js_func(txt):
"""
从 onclick 的值中解析各种绑定时间
返回 函数名 和 参数,只支持单个函数绑定的JS listener
:param txt:
:return:
"""
func = None
param = None
if txt and 2 <= len(txt) <= 200:
pattern = '(?<=s*javascripts*:s*)([w]+)((.+))(?=s*;.*)'
# pattern = '(s*javascripts*:s*)?([w]+)((.+))(s*;.*)?'
m = re.match(ur'' + pattern, u'' + txt, re.I | re.M)
if m and m.lastindex >= 3:
func = m.group(2)
txt2 = m.group(3)
if len(txt2.split(',')) > 1:
param = [str(x).strip(''"') for x in txt2.split(',')]
else:
param = str(txt2).strip(''"')
return func, param
用例
onclick="javascript:func('a',1,2,3)" 返回 ['func',['a',1,2,3]]
onclick="func(11111)"应该返回 ['func',11111]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…