例如在这个例子中,我想要提取js和css的文件路径,所以我匹配引号和引号中间的内容,然后里面用了 .*? 实现防止贪婪匹配,请问接下来怎么样才能正确的匹配呢?
另外实际的需求并不止于html标签,还可能需要在js or css文件里面提取引用url。 所以想到匹配引号和引号之间的内容,再筛选。
<link rel="stylesheet" href="assets/css/bootstrap-theme.css"> <link rel="stylesheet" href="assets/bower_components/angular-loading-bar/build/loading-bar.css"> <link rel="stylesheet" href="assets/bower_components/font-awesome/css/font-awesome.css"> <link rel="stylesheet" href="assets/css/ngdropover.css"> <script src="assets/bower_components/angularjs-ie8-build/dist/angular.js"></script> <script src="assets/bower_components/jquery.browser/dist/jquery.browser.js"></script> <script src="assets/bower_components/layer/layer.js"></script>
三叔2016-11-11 13:21:40
我用python测试了一个很简单的正则, 匹配时忽略大小写; 鉴于你还有其他模式的只要把格式串中的前后双引号去掉, 只匹配js或者css路径即可:
([^"'\s]*\.css|[^"'\s]+\.js)
import re import pprint content_of_html = ''' ngRapProvider.script = 'http://rap.cxb123.com:9090/rap.plugin.js?projectId=6'; // 提取点一 // 如果这个也能提取更好了.. // 提取点二 ''' pprint.pprint(re.findall('''([^"'\s]*\.css|[^"'\s]+\.js)''', content_of_html, re.I)) λ ~/ python x.py ['assets/css/bootstrap-theme.css', 'assets/bower_components/angular-loading-bar/build/loading-bar.css', 'assets/bower_components/font-awesome/css/font-awesome.css', 'assets/css/ngdropover.css', 'assets/bower_components/angularjs-ie8-build/dist/angular.js', 'assets/bower_components/jquery.browser/dist/jquery.browser.js', 'assets/bower_components/layer/layer.js', 'http://rap.cxb123.com:9090/rap.plugin.js', 'assets/css/build-common-index.css', 'assets/css/common.css']