正则

Java正则

偶尔善良 提交于 2019-12-04 08:43:18
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11848407.html Java正则的编写和使用: 使用方法: /** * 正则表达式字符串 */ String patternString = "zoux*"; /** * 需要匹配验证的字符串 */ String needPatString = "z00000000"; /** * 规则匹配对象 */ Pattern pattern = Pattern.compile(patternString); /** * 使用规则匹配对象去验证字符串是否匹配正则 */ pattern.matcher(needPatString).matches(); /** * 直接用字符串中的matches()方法进行匹配效果一样 */ needPatString.matches(patternString); 1. \ 的用法: 特殊字符或者转义用的:例如 \n 表示换行 (特殊符号) \\ 表示匹配 \ 这个符号 (转义) \\\\ 表示匹配 \\ 这个符号 (转义) \\( 表示匹配 ( 这个符号 (转义) System.out.println("(".matches("\\(")); // true System.out.println("(xx".matches("\\(")); //

过拟合解决方案之正则化

﹥>﹥吖頭↗ 提交于 2019-12-04 08:12:37
1.过拟合问题 对于过拟合问题,通常原因是模型选择太过复杂,也有可能是训练数据太少。对于模型太复杂的情况,我们一般有如下考虑:一是通过分析删除部分特征(比如重复多余的特征或者对输出值贡献不太大的特征),但是这样有可能会损失一部分信息。所以,我们可以通过正则化的方法来降低参数值,从而避免过拟合问题。对于过拟合问题的详细描述,可以查看我的另一篇博客 机器学习之欠拟合与过拟合 。 2.正则化 回顾一下,在回归问题中,在确定模型之后,要根据该损失函数找出使得损失函数最小的参数矩阵。在整个回归过程中,最为重要的一步是确定回归模型。通常情况下,如果选择的模型太简单,就会欠拟合。如果模型选择太复杂,就会过拟合。正则化可以很好地解决之一问题,通过对某些参数进行“惩罚”,就可以达到降低参数值的目的。正则化的方法有很多,这里仅介绍L1正则化和L2正则化,对应的分别是Lasson回归和Ridge回归。正则化就是在损失函数中加入正则项(用 \(\Omega(\theta)\) 表示),L1正则对应的正则项为: \(L1 = \lambda\sum_{i=1}^n|\theta_i|\) ,L2对应的正则项是: \(L2 = \lambda\sum_{i=1}^n\theta_i^2\) 。例如线性回归的正则化损失函数为: \[J(\theta)={1\over 2m} \sum_{i=1}^m (h_

自定义路由正则匹配、模板语法、请求响应、路由其他参数、session使用、闪现、before_request、中间件

痞子三分冷 提交于 2019-12-04 07:03:49
自定义路由正则匹配:# 添加到flask中# 我们要用自定义的路由,用正则的话# 1导入from werkzeug.routing import BaseConverter# 2我先要写一个类,然后继承BaseConverter,然后实现进行初始化,to_python(self, value),to_url(self, value)# 3 app.url_map.converters['regex1'] = RegexConverter# 4 我们在路由里面@app.route('/index/<regex1("\d+"):nid>'),regex1='谁便,regex1("正则表达式")# 5 regex1("正则表达式")匹配出来的结果,返回to_python,一定要return# 6 当我们做反向解析的解析的时候,我们的参数,会传递给to_url,return的结果才是我们拼接到我们路由上 from flask import Flask, views, url_for from werkzeug.routing import BaseConverter app = Flask(import_name=__name__) class RegexConverter(BaseConverter): """ 自定义URL匹配正则表达式 """ def __init__(self,

常用的 正则验证等

*爱你&永不变心* 提交于 2019-12-04 06:03:23
1. 长度限制 <p>1. 长度限制</p> <form name=a onsubmit="return test()"> <textarea name="b" cols="40" rows="6" placeholder="不能超过50个字符!"></textarea> <br /> <input type="submit" name="Submit" value="check"> </form> <script language="javascript"> function test() { if(document.a.b.value.length>50) { alert("不能超过50个字符!"); document.a.b.focus(); return false; } } </script> 2. 只能是汉字 <p>2. 只能是汉字 </p> <input type="text" onblur="isChinese(this.value)" placeholder="请输入中文!" /> <script language="javascript"> function isChinese(obj){ var reg=/^[\u0391-\uFFE5]+$/; if(obj!=""&&!reg.test(obj)){ alert('必须输入中文!'); return

使用PHP做网页采集实例过程总结

梦想的初衷 提交于 2019-12-04 05:47:38
最近有个任务是需要我检查一些网站,如果纯手工检查的话,感觉既费时又无聊。所以我就想用采集。思路其实很简单,先把网站的源码采集下来,然后用正则表达式去匹配符合的链接,最后把标题和网址入库、分析。因为我使用最多的是php,所以打算用php做网页采集。 第一步,链接数据库,取出需要检查的网站和正则。 数据库这里我用了postgresql,数据库和表已经按要求建好。因为默认配置的环境是centos系统加nginx、mysql和php,所以首先是配置环境。配置具体不在这里多说,下次总结。环境配置好后在php中用pg_connect连接数据库,这里我连接了两个不同的数据库。 $conn_1=pg_connect("host=xxx.xxx.xxx.xxx port=5432 dbname=mydb1 user=postgres password=xxxxxx") ; $conn_2=pg_connect("host=xxx.xxx.xxx.xxx port=5432?dbname=mydb2?user=postgres password=xxxxxx") ; 第二步,取出网页源码,对源码进行初步处理。 不同网站编码格式不一样,需要先把编码统一转换成utf-8,不然之后入库会出现乱码。 //获取网页源码 //$url='http://www.sijitao.net/' ; $str = file

D22_1.1正则函数

跟風遠走 提交于 2019-12-04 04:56:43
# ### 正则表达式 => 正则函数 # match 验证用户输入内容 search在正则表达式的前面加上^ 就与match函数一模一样 strvar = "y17166668888" obj = re.search("^\d+",strvar) obj=re.match("\d",strvar) print(obj) # re.split 语法 re.split("正则表达式",字符串,分割的次数-可选) 按正则表达式选出的字符串分割 strvar = "alex|wusir-xboyww&xgirlww" res = re.split(r"[|\-&]",strvar) print(res) # sub 替换 返回的结果是一个字符串re.sub(r"[|&-]","%",strvar) strvar = "alex|wusir-xboyww&xgirlww" res = re.sub(r"[|&-]","%",strvar) print(res) # subn 替换 用法上与sub一样,但是返回的结果是元组(替换后的结果,替换的次数) strvar = "alex|wusir-xboyww&xgirlww" res = re.subn(r"[|&-]","%",strvar,1) print(res) # finditer 匹配字符串中相应内容,返回迭代器(装着对象的迭代器)

正则和字符串

…衆ロ難τιáo~ 提交于 2019-12-04 04:19:19
1. 字符集* , 字符集? , 字符集+ eg:abc*d 匹配abcd abccd abccccd 等, *代表前面字符可以不出现,也可以出现一次或多次(0次,1次,多次) abc?d 匹配abd abcd ?代表前面字符最只出现一次或0次(0次,1次) abc+d 匹配abcd abccd abcccd等 +代表前面的字符至少出现一次(1次,多次) 2. [0-9] 0,1,2,3,4,5,6,7,8,9 [a-z] 匹配小写英文字 //strsubing // 0123456789012 var str = 'adgfcbhjklada'; // 从第三个开始到第7个结束 不包含7 var str1 = str.substring(3, 7); //省略第二个参数表示从第三个开始直到结尾 var str3 = str.substring(3) // 从低三个开始直到str.length-3 var str5 = str.substring(3, str.length - 3) // strsub // 从第三个开始 后面的七个元素 var str2 = str.substr(3, 7) //省略第二个参数表示从第三个开始直到结尾 var str4 = str.substr(3) // 从低三个开始直到str.length-3 var str6 = str.substr(3,

正则 (?=exp)

孤人 提交于 2019-12-04 03:22:40
PZLY20191104000003,RZLY201911040000003,[{"EquityNo":"111848856165674","EquityAmount":"20.0","EquityUsedAmount":"30.0","MerchantName":"修正大药房","DrugList":"板蓝根"},{"EquityNo":"111848856165675","EquityAmount":"50.0","EquityUsedAmount":"30.0","MerchantName":"修正大药房","DrugList":"阿莫西林"}],0205_ PZLY20191104000003,RZLY201911040000003,[{"EquityNo":"111848856165674","EquityAmount":"20.0","EquityUsedAmount":"30.0","MerchantName":"修正大药房","DrugList":"板蓝根"},{"EquityNo":"111848856165675","EquityAmount":"50.0","EquityUsedAmount":"30.0","MerchantName":"修正大药房","DrugList":"阿莫西林"}],0205_ 这是一条逗号分隔的数据,匹配每个数据之间的逗号 ,(?=

正则小括号实践

本秂侑毒 提交于 2019-12-03 23:06:20
var reg=/^18|19$/ //结果可匹配:18,19, 189, 119, 819,181, 1819 意思为: *18或者19 *以18开头或以19结尾, *以1开头,9结尾,当中包含8或1 var reg=/^(18|19)$/ //结果:18, 19 //():正则中的分组,也可以理解为一个大正则中的一个小正则(包起来部分是一个整体),在正则中可以使用小括号改变一些默认优先级 //小分组第二个作用:分组引用 //小分组第三个作用:分组捕获 //分组引用:\1或\2...出现和第n个分组一模一样的内容 var reg=/^([a-z])([a-z])\2([a-z])$/; 匹配:food, foot,book, weel, week,oppo, 找出中间两字母相同的四字母组合   看了基础知识后组合应用需要实践 来源: https://www.cnblogs.com/smzd/p/11810700.html

记正则的一番讨论

∥☆過路亽.° 提交于 2019-12-03 21:11:02
有一天, 和群友在做一道题命令: echo axyzba123bcc456 | grep -oP 'x|(?<=a).*?(?=b)' 猜测的结果应该是: xyz 123 得出的结果是: [yxxx-xx ~]$ echo axyzba123bcc456 | grep -oP 'x|(?<=a).*?(?=b)' x 123 可能对于正则,我们掌握的程度还不够深入,所以导致有种懵逼的感觉,谷歌了许多资料后,找到了一番解释,就是零宽断言和一般的匹配,在匹配的对象上,应该是不同: 正则匹配主要是字符和位置 字符:有消费 位置:不消费 插入字符和位置的关系 0a 1x 2y 3z 4b 5a 61 72 83 9b .... 匹配x, 从0位置开始 0a 用a匹配x, 不满足, 交给(?<=a).*?(?=b) 注意:零宽这时候匹配的是位置, 而不是字符, 所以它匹配的是位置0, 因为位置0前面没有a, 所以失败,整体跨过 1x 用x匹配x, 满足, 占有, 整体跳过 2y..4b 不满足跳过 5a 用a匹配x, 不满足, 交给(?<=a).*?(?=b) 同样的,它匹配的是位置5, 因为位置5前面没有a, 所以失败,整体跨过 61 用字符1匹配x, 不满足, 交给(?<=a).*?(?=b) 同样的,它匹配的是位置6, 好了, 满足了, 位置6前面有a, 开始匹配剩下的, 知道(?=b