python2.7 - python 正则前瞻 后瞻 无法匹配到正确的内容
PHP中文网
PHP中文网 2017-04-18 10:33:08
0
1
672

使用 python 来测试正则前瞻 后瞻,但是怎么都没有像官网说的那样。

题目

解析 html onclick=""里面的字符串,返回调用的函数名和参数list

表达式

根据文档写的表达式: https://docs.python.org/2/lib...
(?<=\s*javascript\s*\:\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*javascript\s*\:\s*)([\w]+)\((.+)\)(?=\s*;.*)'
        # pattern = '(\s*javascript\s*\:\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

用例

  1. onclick="javascript:func('a',1,2,3)" 返回 ['func',['a',1,2,3]]

  2. onclick="func(11111)"应该返回 ['func',11111]

PHP中文网
PHP中文网

认证0级讲师

모든 응답(1)
Peter_Zhu

정규식을 직접 작성하셨나요? 역방향 검색에는 명확한 패턴 길이가 필요합니다. 다음 정규식을 사용하여 요구 사항을 충족할 수 있는지 확인하세요. (1+)((['"w,] +)? )


  1. "': ↩
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿