python2.7 - python 正則前瞻 后瞻 無法匹配到正確的內(nèi)容
問題描述
使用 python 來測試正則前瞻 后瞻,但是怎么都沒有像官網(wǎng)說的那樣。
題目解析 html onclick=''里面的字符串,返回調(diào)用的函數(shù)名和參數(shù)list
表達式根據(jù)文檔寫的表達式: https://docs.python.org/2/lib...(?<=s*javascripts*:s*)([w]+)((.+))(?=s*;.*)
代碼def parse_js_func(txt): ''' 從 onclick 的值中解析各種綁定時間 返回 函數(shù)名 和 參數(shù),只支持單個函數(shù)綁定的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)'應(yīng)該返回 [’func’,11111]
問題解答
回答1:你那個正則是你自己寫的吧? 向后查找要求要明確pattern的長度, 試下這個正則能不能滿足要求: (1+)(([’'w,]+)?)
'’: ?相關(guān)文章:
1. angular.js - angularjs的自定義過濾器如何給文字加顏色?2. javascript - iframe 為什么加載網(wǎng)頁的時候滾動條這樣顯示?3. dockerfile - 為什么docker容器啟動不了?4. dockerfile - 我用docker build的時候出現(xiàn)下邊問題 麻煩幫我看一下5. macos - mac下docker如何設(shè)置代理6. javascript - JS設(shè)置Video視頻對象的currentTime時出現(xiàn)了問題,IE,Edge,火狐,都可以設(shè)置,反而chrom卻...7. mysql - AttributeError: ’module’ object has no attribute ’MatchType’8. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?9. javascript - es6中this10. javascript - 移動端,當出現(xiàn)遮罩層的時候,遮罩層里有div是超出高度scroll的,怎么避免滑動div的時候,body跟隨滑動?
