正则表达式

8.正则表达式和XPath

徘徊边缘 提交于 2020-01-24 04:56:36
1.使用正则表达式爬取内涵段子 import requests import re def loadPage(page): url = "http://www.neihan8.com/article/list_5_" +page+".html" #User-Agent头 user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT6.1; Trident/5.0' headers = {'User-Agent': user_agent} response = requests.get(url,headers=headers) response.encoding = 'gbk' html = response.text return html if __name__=="__main__": page=input('请输入要爬取的页面:') html=loadPage(page) # with open('a.html','w') as f: # f.write(html) # 找到所有的段子内容<div class="f18 mb20"></div> # re.S 如果没有re.S 则是只匹配一行有没有符合规则的字符串,如果没有则下一行重新匹配 # 如果加上re.S 则是将所有的字符串将一个整体进行匹配,找到(.*?

正则表达式中?=和?:和?!的理解

▼魔方 西西 提交于 2020-01-24 02:26:43
https://blog.csdn.net/csm0912/article/details/81206848 参考文献 http://defindit.com/ascii.html https://www.runoob.com/regexp/regexp-syntax.html 正则表达式中?=和?:和?!的理解 原创这个昵称没有被占用吧 发布于2018-07-25 18:01:56 阅读数 44792 收藏 展开 要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念: // 前瞻: exp1(?=exp2) 查找exp2前面的exp1 // 后顾: (?<=exp2)exp1 查找exp2后面的exp1 // 负前瞻: exp1(?!exp2) 查找后面不是exp2的exp1 // 负后顾: (?<!exp2)exp1 查找前面不是exp2的exp1 1 2 3 4 5 6 7 8 举例: "中国人".replace(/(?<=中国)人/, "rr") // 匹配中国人中的人,将其替换为rr,结果为 中国rr "法国人".replace(/(?<=中国)人/, "rr") // 结果为 法国人,因为人前面不是中国,所以无法匹配到 1 2 要理解?:则需要理解捕获分组和非捕获分组的概念: ()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字

正则表达式

北慕城南 提交于 2020-01-24 00:28:23
数字: 1 $ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9] )$ 非零开头的最多带两位小数的数字:^([1-9][0-9] )+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$ 正数、负数、和小数:^(-|+)?\d+(.\d+)?$ 有两位小数的正实数: 2 +(.[0-9]{2})?$ 有1~3位小数的正实数: 3 +(.[0-9]{1,3})?$ 非零的正整数: 4 \d $ 或 ^([1-9][0-9] ){1,3}$ 或 ^+?[1-9][0-9] $ 非零的负整数:^-[1-9][]0-9" $ 或 ^-[1-9]\d $ 非负整数:^\d+$ 或 5 \d*|0$ 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 非负浮点数:^\d+(.\d+)?$ 或 6 \d*.\d*|0.\d*[1-9]\d*|0?.0+|0$ 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$ 正浮点数: 7 \d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9] [1-9][0-9]

JAVA正则表达式分析爬虫数据

*爱你&永不变心* 提交于 2020-01-23 19:29:02
网络爬虫与正则表达式 爬虫是爬取网络资源的一种重要途径,我们可以通过正则表达式来将所抓取到的数据进行分析,提取处所要得到的结果。 实验目标:抓取某一网站上所有的超链接 创建工具类,通过URL获得输出流 ① 使用url类来获得输入流,以便从网站下载资源 ② 使用InputStreamReader将字节流进行转换,便于后续操作 public static String getDataFromURL(String url,String code) { try { StringBuilder dataBuilder = new StringBuilder(); URL myUrl = new URL(url); //将字节流直接转换为字符流,并确定编码,方便操作 BufferedReader bReader = new BufferedReader( new InputStreamReader( myUrl.openStream(),code)); //使用StringBuildr来创建可变字符串,防止产生大量String对象 String data = null; while((data=bReader.readLine())!=null) { dataBuilder.append(data); } bReader.close(); return dataBuilder.toString

正则表达式Regex

徘徊边缘 提交于 2020-01-22 20:18:00
1.概念 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 2.基本语法 (1) 1/ ‘^’和’$’ :他们指出一个字符串的开始和结束。 例如: “^The”:表示所有以”The”开始的字符串(”There”,”The cat”等); “of despair ” : 表 示 所 以 以 ” o f d e s p a i r ” 结 尾 的 字 符 串 ; “ a b c ”:表示开始和结尾都是”abc”的字符串; “notice”:表示任何包含”notice”的字符串。 如果你不使用两个特殊字符,你就在表示要查找的串在被查找串的任意部分——你并不把它定位在某一个顶端。 2/ ‘*’,’+’和’?’ :表示一个或一序列字符重复出现的次数。它们分别表示”没有或更多”,”一次或更多”还有”没有或一次”。 例如: “ab*”:表示一个字符串有一个a后面跟着零个或若干个b。(“a”,”ab”,”abbb”,……); “ab+”

常见得jquery的正则表达式

China☆狼群 提交于 2020-01-22 19:45:11
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 13 非负整数:^\d+$ 或 ^[1-9]\d*|0$ 14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*

正则表达式

你离开我真会死。 提交于 2020-01-22 19:44:48
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 13 非负整数:^\d+$ 或 ^[1-9]\d*|0$ 14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*

javaScript 正则表达式验证

拈花ヽ惹草 提交于 2020-01-22 19:39:28
function checkDataClude() { var data = "1234"; var reCat = /123/gi; //alert(reCat.test(data)); var match=data.match(reCat); if (match.length==0) { alert("不存在"); } else { alert("存在"); } } function getNumStr() { var str = "a1b2c3d4e5f6g7h8i9j0k"; var match = str.match(/\d/g); var msg = []; for(var i = 0; i < match.length; i++) { msg.push(match[i]); } alert(msg);//1,2,3,4,5,6,7,8,9,0 } function getStr1() { var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,"; var reCat = /cat/gi; var arrMactches = data.match(reCat) var msg=[]; for (var i=0;i < arrMactches.length ; i++) { msg.push (arrMactches[i])

javascript 正则表达式

♀尐吖头ヾ 提交于 2020-01-22 19:39:08
//正则验证汉字空格方法 function ValidInputReg(obj) { var reg = /[\u4e00-\u9fa5]/g; //汉字 if (reg.test(obj.value)) { obj.value = obj.value.replace(reg, ''); } var regspace = /(^\s+)|(\s+$)/g;//空格 if (regspace.test(obj.value)) { obj.value = obj.value.replace(regspace, ''); } } //正则验证手机号 function ValidPhoneNumber(obj) { var reg = /^(13[0-9]{9})|(15[089732165][0-9]{8})|(18[012356789][0-9]{8})$/; //手机号 if (!reg.test(obj.value)) { obj.value = ""; } } /*===验证邮箱===*/ function ValidEmail(obj) { var reg = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*