python2.7 - python 正则前瞻 后瞻 无法匹配到正确的内容
问题描述
使用 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]
问题解答
回答1:你那个正则是你自己写的吧? 向后查找要求要明确pattern的长度, 试下这个正则能不能满足要求: (1+)(([’'w,]+)?)
'’: ↩相关文章:
1. mysql - 在不允许改动数据表的情况下,如何优化以varchar格式存储的时间的比较?2. css - chrome下a标签嵌套img 显示会多个小箭头?3. docker网络端口映射,没有方便点的操作方法么?4. javascript - 网页打印页另存为pdf的代码一个问题5. vim - docker中新的ubuntu12.04镜像,运行vi提示,找不到命名.6. css3 - 纯css实现点击特效7. java中返回一个对象,和输出对像的值,意义在哪儿8. javascript - 有适合开发手机端Html5网页小游戏的前端框架吗?9. javascript - Img.complete和img.onload判断图片加载完成有什么区别?10. mysql 为什么主键 id 和 pid 都市索引, id > 10 走索引 time > 10 不走索引?
