正则学习笔记 主要是C#或Javascript --不错

同花顺Supermind量化交易 风险控制建模--海龟交易法则 A.市场与标的海龟交易法则应用于流动性高的市场中,选择交易量较大的标的进行交易。本文以沪深300指数ETF为标的,构建海龟交易法则。B、仓位:仓位是海龟交易系统最核心的部分,通过ATR真实波幅指标来管理仓位。第一步:计算True Range,简称TR。TR = Max ( H−L , H−P , P−L ) ,其中H为当日日内最高价,L为当日日内最低价,P为前一日收盘价。第二步:计算ATRATR = mean ( TR , 20 ) , 即计算过去20天的TR的平均值,ATR是TR的移动平均值。 阅读详情

来自:http://blog.youkuaiyun.com/youbl/article/details/8985086

概念相关笔记

这是俺学习正则时的一些正则学习笔记
可能理解会有些不对,谁看到谁提哈,嘿嘿

1、容易混淆的单行模式和多行模式:
单行模式只影响.(小数点)的匹配,关闭单行模式,.匹配换行以外的任意字符;开启单行模式,.匹配任意字符
多行模式只影响^和$的匹配,关闭多行模式,^只能匹配字符串开头,$只能匹配字符串结尾;
        开启多行模式,^匹配字符串开头或行的开头,$匹配字符串结尾或行的结尾
因为正则发展的历史原因,造成这2个概念好像是相反的概念,实际这2个概念是没有任何关系的2个概念

2、全局模式(C#没有,js有):关闭时,只匹配一次;开启时,匹配全部字符串,
在js中,关闭全局模式,等效于C#中的Match方法;开启全局模式,等效于C#中的Matches方法

3、贪婪模式与懒惰模式:举例说明:有字符串:0<div>a1</div>b1<div>c1</div><div>d1</div>9
贪婪模式的正则:<div>.*</div>,只有一个匹配结果:<div>a1</div>b1<div>c1</div><div>d1</div>
懒惰模式的正则:<div>.*?</div>,有3个匹配结果,分别是:<div>a1</div>    <div>c1</div>       <div>d1</div>
注:贪婪模式的原理是匹配优先,而懒惰模式的原理是忽略优先,比如:
字符串 abd
贪婪模式正则:ab?c    在匹配时,会先尝试进行ab匹配,再比对c,不匹配了,进行回溯,进行ac的匹配
懒惰模式正则:ab??c  在匹配时,会先尝试进行ac匹配,不匹配了,进行回溯,进行abc的匹配

4、非回溯匹配(也叫固化分组):(?>):举例说明:字符串:张三是中国人,李四是中国人,王五是韩国人
正则:(.*)中国人,因为正则引擎的贪婪特性,.*第一次扫描时会匹配全部字符串,发现后面没有字符了,不能匹配正则里的“中国人”,于是把.*的匹配往前递推一个,发现“国”也不能匹配正则里的“中国人”,于是再把.*的匹配往前递推,一直推到“张三是中国人,李四是”,此时匹配到了“中国人”,于是.*匹配的结果就是:张三是中国人,李四是 这里说的往前递推就是回溯
把正则改为:(?>.*)中国人  匹配就会失败,因为正则式里指定了.*不允许回溯,所以.*第一次扫描时会匹配全部字符串,再往后扫描时匹配不到,就直接返回了,而不会往前递推。注意:非回溯组也是非捕获组,就是这个括号里的值不会被捕获
之所以有这个非回溯,是因为在正则表达式引擎时,回溯是很耗资源和时间的,要尽量避免回溯,比如:
字符串:<a href="http://www.beinet.cn">这是我的网站</a>,要用正则匹配里面的url和文本,可以用下面2个正则,都可以实现:
<a href="(.+?)">(.+?)</a>
<a href="([^"]+)">([^<]+)</a>
但是第一个正则,在匹配时会有回溯,比如href是懒惰匹配,这个.+?会先匹配h,然后看后面是不是",不是,再递推下一个字符t,一直递推19次
而第二个正则,直接就匹配到"前面,不存在回溯,所以在写正则时,要尽量使用没有回溯,或者回溯少的正则

其它笔记

1、\b:表示单词的起始或结束
\B:表示非单词边界(不在单词的开始或结束)
^:表示字符串的起始位置,指定多行模式时,表示行的起始位置
$:表示字符串的结束位置,指定多行模式时,表示行的结束位置

2、反向引用:\1这样的转义数字,代表前面捕获的内容,如果我们想匹配重复的单词,就可以用这种转义数字
举例:this isa a this this a a file list file filea,我们要找出其中重复的单词,可以用正则:
\b([a-z]+)\b \1\b 来匹配,\1表示第一个括号里的内容,\2表示第2个,如此类推

3、捕获的顺序是按左括号的出现顺序,从1开始顺序递增
注:捕获就是把括号里的内容压入堆栈
例如:([+-])?(\d+(\.\d+)?)(.*)
([+-])为捕获的第一个内容,通常为$1,
      C#中可以用Match.Groups[0].Value来得到捕获的值(在正则中可以用\1反向引用,以下类推)
               也可以用Match.Result("$1")来得到捕获的值
(\d+(\.\d+)?)为捕获的第二个内容,通常为$2
而$2中的(\.\d+)为捕获的第三个内容,通常为$3
最后的(.*)为捕获的第四个内容,通常为$4
注意:如果补获组进行了命名,则未命名的第1个左括号为$1,未命名的第2个左括号为$2,以此类推,直到没有未命名的补获为止,再开始按顺序推算有命名的补获组

4、如果对某个括号里的内容不想进行捕获,可以使用?:
例如:例3修改为:([+-])?(\d+(?:\.\d+)?)(.*)
例3里的$3就变成了(.*),而$4就不存在了
技巧:如果不想加?:,可以在匹配时增加选项:RegexOptions.ExplicitCapture,这个选项只会捕获用(?<name>...)的组,但是如果指定了反射引用时,必须对引用的的捕获显式命名,比如正则:<([^\s]+)></\1>,如果指定RegexOptions.ExplicitCapture时会报错

5、替换时保留匹配内容,例如字符串:http://beinet.cn/
要替换成超链接形式<a href=‘http://beinet.cn/’>beinet.cn</a>,可以用C#语句:
    Regex.Replace(@"http://beinet.cn/", @"(http://(.*)/)", @"<a href='$1'>$2</a>");
或
    Regex.Replace(@"http://beinet.cn/", @"(?<url>http://(?<host>.*)/)", @"<a href='${url}'>${host}</a>");

6、\s匹配空白字符,包括:空格、Tab、换行、回车,等价于 [\t\r\n ]
  \S匹配上述4个字符以外的其它所有字符

  所以:[\s\S] 就可以匹配任意字符了   

7、\w :匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_]
\W :匹配任何非单词字符,等价于 [^A-Z a-z 0-9_] 

  所以:[\w\W] 也可以匹配任意字符了   

8、\d :匹配所有数字,一般等价于 [0-9]  注:在C#里,默认情况下也匹配全角的0-9
\D :匹配任何非数字
  所以:[\d\D] 也可以匹配任意字符了   

9、.(句点字符。): 匹配除 \n 以外的任何字符。
注意1:[.\n]并不能匹配任意字符,因为在[ ]里,.只是代表自己,不匹配其它字符
              所以要匹配任意字符,请参考:5,6,7
注意2:如果指定正则选项为Singleline,则此时.匹配任意字符了

10、\nnn:匹配一个3位的8进制Ascii字符,如\103匹配大写C字符
\xnn:匹配一个2位的16进制Ascii字符,如\x43匹配大写C字符
\unnnn:匹配一个4位的16进制Unicode字符
\cV:匹配一个控制字符,如\cV匹配Ctrl-V
注意1:为了跟反向引用区分开,表示8进制字符时,比如\43,请写成\043

11、零宽度断言:有的地方称之为环视,或者预搜索,或声明,就是根据表达式匹配一个位置,而不是匹配字符,举例:
有字符串为:abcdefghijklmnopqrstuvwxyz
正声明?=
(?=opq):匹配n与o中间的位置,此时:mn(?=opq),就可以匹配到mn,而m(?=opq)匹配不到东西
                 (?=opq)op,就可以匹配到op,而(?=opq)p匹配不到东西
    举例:Languages have: Java C#.Net C++ Javascript VB.Net JScript.Net Pascal
                正则:\S+(?=\.Net) 将得到结果:C# VB JScript 

逆向正声明?<=
(?<=opq):匹配q与r中间的位置,此时:pq(?<=opq),就可以匹配到pq,而p(?<=opq)匹配不到东西
                   (?<=opq)rst,就可以匹配到rst,而(?<=opq)st匹配不到东西
注:Javascript不支持逆向正声明
    举例:
名单:张三 李四 张建四 王五
                 正则:(?<=张)\S+ 将得到结果:三 建四
负声明?|
(?!opq):匹配所有位置,除了n与o中间的位置,此时:[a-z](?!opq),就可以匹配到除n以外的所有字符,而n(?!opq)匹配不到东西
                   (?!opq)[a-z],就可以匹配到除o以外的所有字符,而(?!opq)o匹配不到东西
    举例:123A 456c 789 111C
                 正则:\d{3}(?![A-Z]) 将得到结果:456 789
逆向负声明?<!
(?<!opq):匹配所有位置,除了q与r中间的位置,此时:[a-z](?<!opq),就可以匹配到除q以外的所有字符,而q(?<!opq)匹配不到东西
                   (?<!opq)[a-z],就可以匹配到除r以外的所有字符,而(?<!opq)r匹配不到东西
注:Javascript不支持逆向负声明
    举例:
123A 456C 789 111C
                 正则:(?<!1)\d{2}[A-Z] 将得到结果:56C
综合应用举例:
\b\w+(?=o)o\b:匹配所有以o结尾的单词
Regex.Replace("I have 1234567Yuan", @"(?<=\d)(?=(?:\d{3})+(?!\d))", ","):替换字符串里的数字为科学计数法(即3位数字一个逗号)
上面的是C#,Javascript因为不支持逆向环视,所以要用:'123456'.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, "$1,")

12、决策(也叫平衡组)是正则里的3目运算表达式,形如:(?(exp)yes|no),如果exp成立,就匹配yes,否则匹配no
(?!)表示返回匹配失败,如:(\d)(?(1).|(?!))可以匹配以数字开头的任意2个字符
举例1:
字符串:1a cb 3a 5c 3b 正则:(?(\d)\da|b) 可以匹配到结果:1a b 3a b
需要注意的是yes表达式是\da,如果是正则:(?(\d)a|b) 将只会匹配到:b b,
因为expression成立时,是匹配到这个expression的位置,后面的yes也必须要包含这个expression
当然:(?(\d)\wa|b)的匹配结果也是可以的,因为\w包含了\d
对于字符串a1234,正则(?(?<!a)\d\d|\d)可以匹配到1 和 23
举例2:引用前面的条件
字符串:10-12 z0-az 11-sd  正则:(\d)?(0)-(?(1)\d\d|[a-z][a-z]) 后面的?(1),表示前面的第1 个捕获如果匹配时,用yes匹配,否则用no匹配
这个正则可以匹配到:10-12  0-az
参考:http://blog.youkuaiyun.com/lxcnn/article/details/4402808
http://www.cnblogs.com/luckcs/articles/2212996.html
 

13、正则表达式选项,(?i:)指定括号内的匹配忽略大小写,比如正则:(?i:a) 表示匹配a或A,而不管是否指定了RegexOptions.IgnoreCase选项
(?n:):指定只有显式命名或编号的组才进行捕获,类似于RegexOptions.ExplicitCapture
(?x:):消除模式中的非转义空白并启用由 # 标记的注释,类似于RegexOptions.IgnorePatternWhitespace
(?m:):指定使用多行模式,类似于RegexOptions.Multiline
(?s:):指定使用单行模式,类似于RegexOptions.Singleline
注:选项可以叠加,比如:(?is:) 表示单行模式,忽略大小写

14、应用 | 时要注意,正则引擎总是选择第一个选项进行匹配,无法匹配时才考虑第2个选项,然后第3个,比如:
字符串:abcd  正则:a|ab 只匹配到 a       而正则:ab|a 则匹配到 ab

15、Javascript提取匹配中的内容举例,下面是在Html里循环提取超链接的Href和链接文本:
var a = /<a\s+[^>]*href="([^"\s]*)"[^>]*>([\s\S]*?)<\/a>/ig;
while(a.test(html)){// 第二个test会从第一个test的lastIndex+1处开始匹配
    alert(RegExp.$1);
    alert(RegExp.$2);
}

正则举例

1、需求:如果小数在2位以内,就保持不变,如果有第3位小数,且第3位小数不是0,那也保留,如果是0就不保留,第3位以后的数字全部替换掉
比如:string str = 1.23=》1.23、1.234=1.234、1.230=》1.23、1.2345678=》1.234
此时,Regex.Replace(str, @"(\.\d\d[1-9]?)\d*", "$1")就可以实现,但是对于1.23和1.234,替换操作浪费了一点时间,因为结果相当于用23替换成23
有效率一点的做法是把正则改成:(\.\d\d(?>[1-9]?))\d+
注意里面的固化分组,如果不使用固化分组的正则:(\.\d\d[1-9]?)\d+ 在匹配1.625时,因为\d+至少要匹配一个数字,而[1-9]?可以不匹配,所以导致回溯,\d+匹配了5,导致替换结果成了1.62,与需求不符,所以这里要用固化分组,避免回溯

2、需求:匹配出字符串里的日期,比如:string str = January 31  我们要得到后面的日期31
一般我们会用正则:(0?[1-9]|[12]\d|3[01])  这个多选组合,0?[1-9]匹配01-09或1-9;[12]\d匹配10-29;3[01]匹配30-31,应该是没错的但是匹配的第一个
结果是3,而不是31      这是因为正则引擎按顺序测试组合,0?[1-9]可以匹配3,所以错误结果出现了
正确的正则应该是把能匹配最短数字的0?[1-9]放到最后,变成:([12]\d|3[01]|0?[1-9])  就OK了
或者使用下列正则之一:
(31|[123]0|[012]?[1-9])               (0[1-9]|[12]\d?|3[01]?|[4-9])

3、需求:匹配双引号和里面的内容,内容里允许出现\" 和\\这样的转义
如果内容不包含引号,那正则就是:"[^"]*"
如果加上允许转义的双引号时,我们先用逆序环视,正则变成:"([^"]|(?<=\\)")*",这个表示式可以匹配 "aa\"bb" 这样的文本,但是对于"aa\\" and "bb",它的匹配结果是错误的,因为它把转义的\\后面的这个斜杠去环视了,所以这个正则不能用
再改用:"(\\.|[^"])*",就是匹配\和一个字符,或非双引号,对于上面的这回可以匹配了,不过,对于没有结束双引号的字符串:"aa\"bb,它又匹配到了"aa\",因为正则引擎的回溯到\"时,[^"]能匹配前面的\,于是就返回了匹配成功
所以最终的正则应该是:"([^"\\]|\\.)*"   或者使用固化分组:"(?>([^"]|\\.)*)"
注:这个正则顺序交换一下,变成:"(\\.|[^"\\])*"  也是可以的,但是这个正则回溯比不交换前多,参见下图

4、需求:替换字符串前后的空白(C#的Trim方法已经可以实现,但是js没有这个功能)
在网上最常见的作法是用正则: (^\s*)|(\s*$)  可以搜索 Javascript trim,得到一大堆的类似结果如下:
String.prototype.trim= function(){return this.replace(/(^\s*)|(\s*$)/g, "");} 
这个当然没有问题,但是这个正则是可以改进的,首先,用\s*,这样也可以匹配空,没有空白的字符串也会进行2次替换,
    而且正则里有2个捕获,而实际上捕获没有使用到,
所以比较好的作法是把*改成+,并去掉括号,用:String.prototype.trim= function(){return this.replace(/^\s+|\s+$/g, "");}
注:虽然这点改进很小,但是如果不是替换成"",那结果就出错了,并且在做任何工作时,都想到这么一点点,那总的提升效率还是很多的

5、需求:匹配HTML标签,允许标签中的属性值包含<或>,例如:<input value="a>bc" type="text">
如果没有后面那个要求,那么匹配HTML标签,就是简单的:<[^>]+>
根据要求,我们可以知道,属性值是包含在单引号或双引号里的,所以可以得到下面正则:
<("[^"]*"|'[^']*'|[^'">])*> 

6、需求:匹配嵌套div标签的最内层,例如:<div><div>2<div>3</div></div>1<div>2<div>3<a>3</a>3</div></div></div>,取出3的div
首先自然是两端的正则:<div[^>]*>.*?</div>,这个得到结果:<div><div>2<div>3</div>
那么要求在中间不能出现<div字样,用(?:(?!<div).)匹配前面不等于<div的任意一个字符,得到最终正则如下:
<div[^>]*>(?:(?!<div).)*?</div> 

7、需求:匹配嵌套div标签的最外层
 div>1<div>2<div>3<div>4</div>5 匹配到<div>4</div>
div>1<div>2<div>3<div>4</div>5</div> 匹配到<div>3<div>4</div>5</div>
div>1<div>2<div>3<div>4</div>5</div>6</div>7</div>8</div> 匹配到<div>2<div>3<div>4</div>5</div>6</div>
首先自然是两端的正则:<div> 和 </div>,
然后(?<o><div>)|(?<-o></div>)表示匹配div和相应的结束div,<o>表示把捕获压入堆栈,<-o>表示取出堆栈,堆栈没有数据就表示匹配失败,第三部分(?:(?!</?div)[\s\S])表示不包含div的任意字符,最后还有一块(?(o)(?!))表示如果堆栈中还有div,匹配失败
最终正则如下:
<div>((?<o><div>)|(?<-o></div>)|(?:(?!</?div)[\s\S]))*(?(o)(?!))</div>

8、需求:匹配有效的物理路径,如 c:\ d:/abc/ddd.txt e:\\\\abc////\\kk.exe(注:连续的\或/都被Windows认为是一个\,所以有效)
物理路径自然要以盘符开头,所以正则开始是:^[a-zA-Z]:[\\/]+
接着是后面的子目录,目录或文件名按Windows规定,不允许出现<>/\|:"*? 以及 回车换行共11个字符,所以匹配子目录的正则是:[^\<\>\/\\\|\:""\*\?\r\n]+[\\/]+,因为可能有多级子目录,也可能没有子目录,所以匹配全部子目录的正则就是:(?:[^\<\>\/\\\|\:""\*\?\r\n]+[\\/]+)*,最后完整的正则就是:
^[a-zA-Z]:[\\/]+(?:[^\<\>\/\\\|\:""\*\?\r\n]+[\\/]+)*[^\<\>\/\\\|\:""\*\?\r\n]*$

9、需求:输入6~20位的密码,要求必须是大写字母、小写字母和数字的组合
完整的正则是:
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{6,20}$
另外一个使用平衡组的正则:
^(?:([0-9])|([a-z])|([A-Z])){6,20}(?(1)|(?!))(?(2)|(?!))(?(3)|(?!))$

10、需求:匹配HTML的a标签里的href,要求支持单引号、双引号或无引号的可能
可能的数据有:<a href='xxx' target='_self'> <a href=xxx target='_self'> <a href="xxx" target='_self'><a href="javascript:alert('1')"><a href='javascript:alert("1")'>
首先自然是匹配到href的正则:<a\s[^>]*href=,接着匹配引号,因为可能没引号,因此是:(['"])?,后面要判断出现了引号没有,用一个三目运算符:(?(1)yes|no)
如果前面出现了引号,用正则:(?:(?!\1).)*\1,表示不等于前面引号的多个字符+前面的引号(\1表示引用)
完整的正则是(当然这个正则没有考虑更复杂的情况,比如<a href="javascript:alert(\"1\")">,这个等你来扩展吧):
<a\s[^>]*href=(['"])?(?(1)((?:(?!\1).)*)\1|([^\s>]*))


26、机器学习模型的成员推断攻击与隐私保护 本文探讨了机器学习模型面临的成员推断攻击及其对隐私的潜在威胁。通过使用CIFAR-10数据集,详细介绍了如何利用影子模型和攻击模型推断特定数据点是否属于模型的训练集。实验表明,即使无法直接访问模型参数和原始数据,攻击者仍能以高于随机猜测的概率进行推断,从而构成隐私风险。此外,文章还分析了实验的关键技术点,并提出了多种隐私保护建议,包括数据脱敏、差分隐私、模型正则化等方法。 阅读详情

相关推荐

【AWS】创建aws云服务器EC2实例

本文介绍了如何创建aws的EC2云服务器,并介绍了如何使用Xshell远程连接上云服务器

Marcos921的博客 2501

正则学习笔记 主要是C#或Javascript

[转自]http://beinet.cn/Blog/BlogShow.aspx?id=8fe6311d-ea7b-4e81-9fa1-465b593c82c1 概念相关笔记 这是俺学习正则时的一些正则学习笔记 可能理解会有些不对,谁看到谁提哈,嘿嘿 1、容易混淆的单行模式和多行模式: 单行模式只影响.(小数点)的匹配,关闭单行模式,.匹配换行以外的任意字符;开启单行模式,.匹配任意字

苦苦的潜行者 930

高通平台camera构架sensor驱动详解

优先阅读。

a5566255的专栏 3251

JS混淆解密指南:解读混淆后的JS代码并提高开发效率

JS混淆是一种常见的前端开发技术,通过混淆JS代码,可以有效提高代码的安全性。但是,混淆后的代码也给开发者带来了一定的困难,因为混淆后的代码不易于阅读和理解。本文将介绍JS混淆技术的基本概念和常用方法,以及如何使用JS混淆解密工具www.jsjiami.com对混淆后的代码进行解密。JS混淆的基本概念和常用方法JS混淆指的是对JS代码进行加密或混淆,使其难以被理解和阅读,从而提高代码的安全性。混淆后的JS代码可以通过代码压缩、变量名替换、代码注释删除、字符串加密等方式来实现。

mxd01848的博客 1765

KiCad插件安装太慢?试试华秋版,再手把手教你装这5个实用插件

本文介绍了KiCad华秋发行版如何解决插件安装慢的问题,并详细推荐了5个实用插件及其安装方法。华秋版优化了国内用户的下载速度,预装了常用扩展包,包括BOM生成器、3D模型增强工具等,显著提升PCB设计效率。

weixin_29184075的博客 549

OpenCV+ArUco实战:如何用Python实现高精度二维码测距(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现基于ArUco标签的高精度单目视觉测距。通过相机标定、标签检测和三维位置估算,结合完整代码示例,帮助开发者在机器人导航、工业自动化等场景中实现厘米级距离测量,并探讨了精度优化与三维可视化等进阶应用。

weixin_29052717的博客 478

‌新版标点符号使用速查手册‌

❌ “《条例》、《办法》” → 正确应为《条例》《办法》(书名号并列不加顿号)用于注释说明,紧跟被解释词:苏轼(1037–1101)是北宋文学家。“一逗到底”、冒号嵌套(如“宣布:有两个消息:…主谓之间(长主语):这位来自山区的老师,始终坚守讲台。直接引用、特殊含义、强调:他说的“聪明”,其实是讽刺。标在文字下方,强调关键词:每个中国人都应铭记这份‌荣·誉‌。‌每3处标点错误扣1分‌,最多扣2分(高考基础等级)。🔹 可叠用表达强烈情感,但不超过三个:太震撼了!嵌套规则:外双内单,“落实‘三审’制度”。

chinalog的专栏 1047

Nuvoton OpenTitan开源安全芯片技术解析与应用

硬件安全模块(HSM)作为可信计算基的核心组件,其设计透明度和可验证性正成为行业焦点。RISC-V架构凭借开源特性,为构建可审计的安全芯片提供了新范式。OpenTitan项目通过开放Verilog源码和形式化证明,实现了从物理不可克隆函数(PUF)到分层安全启动的全栈透明。该方案在lowRISC Voyager开发板上实测显示,安全启动时间小于200ms,性能损耗仅7%,显著优于传统黑盒方案。目前该技术已应用于Chromebook和数据中心,其40nm工艺版本更将功耗降至5μA待机水平,为物联网和边缘计算提

weixin_36303807的博客 399

正则表达式 中? 问号的作用

参考 https://stackoverflow.com/questions/28646475/warning-preg-match-compilation-failed-unrecognized-character-after-or 参考 https://www.regular-expressions.info/atomic.html 上面第二个连接是文档 厉害了For a strang

successdd的博客 7318

Kubeflow系统性学习教程:从入门到高级实践

Kubeflow学习教程摘要(150字): Kubeflow是基于Kubernetes的云原生MLOps平台,提供端到端机器学习解决方案。核心功能包括Jupyter Notebooks开发环境、Pipelines工作流编排、分布式训练支持和模型服务部署。教程采用三阶段学习路径:初学者搭建Kind集群体验Notebooks;中级开发自定义Pipeline组件;高级实现企业级应用。通过容器化和K8s CRD深度集成,解决环境一致性、实验跟踪和资源调度等MLOps痛点,相比MLflow/Airflow更适合大规模

自可乐的博客 887

Unreal5从入门到精通之如何解决在VR项目在头显中卡顿的问题

以前我们使用Unity开发VR,Unity提供了非常便利的插件和工具来做VR。但是由于Unity的渲染效果不如Unreal,现在我们改用Unreal来做VR了,所有的VR相关的配置和操作都要重新学习。今天就来总结一下,我在开发VR过程中碰到的所有问题。好了,以上就是我目前做VR时碰到的一些问题,希望对你有所帮助。

TxNet 2482

正则表达式基础

说明: 由于在正则表达式中“ \ ”、“ ? ”、“ * ”、“ ^ ”、“ $ ”、“ + ”、“(”、“)”、“ | ”、“ { ”、“ [ ”等字符已经具有一定特殊意义,如果需要用它们的原始意义,则应该对它进行转义,例如 希 望在字符串中至少有一个“ \ ”,那么正则表达式应该这么写: \\+ 。 RegEx类常用的方法 ①静态Match方法 使用静态Ma...

MaFeng 668

【图论】系列(一)之图论的构成

图论是研究图的数学分支,本章介绍了图论的基本构成和概念

qq_30066733的博客 749

java 密码复杂度 正则_Javascript校验密码复杂度的正则表达式

搜索热词目前使用的正则表达式如下:(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}对应的验证规则是:密码中必须包含字母、数字、特称字符,至少8个字符,最多30个字符。这个正则表达式在C#可以正常使用,但是在Javascript中却有问题。请问是在js中如何写这样的正则表达式?@H_301_21@测试字符串:a123456-解决方法如下所示:@H_301...

weixin_29161785的博客 507

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

HTML5 混合APP开发学习笔记(五)——JavaScript编程基础

JavaScript编程基础 写这一篇学习笔记还算是相对轻松的吧,终于,终于遇到了熟悉的知识了,毕竟接触了C++、C#和 Python,虽算不上精通,但也是花费精力去研究过,可以自娱自乐的写点脚本程序玩玩 一向秉承着重复性的工作都能交给计算机去完成的理念来学习编程,所以学习起来还是很有趣的。 废话不多说了,下面开始整理学习笔记,这里也就写写在JS中特有的一些知识吧。 JavaScript基础语法 ...

weixin_43569314的博客 1591

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

正则表达式深入浅出

本文转自:https://mp.weixin.qq.com/s/gMA8xnUhhrIrcUmV8wrvkQ 本文旨在用最通俗的语言讲述最枯燥的基本知识 文章提纲: 元字符 重复限定符 分组 转义 条件或 区间 正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口...

每天进步一点点 459

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

正则表达式的基础说明与介绍

正则表达式通常被用来检索,替换那些符合某个模式的文本,许多程序设计语言都支持利用正则表达式进行字符串的操作,但是写法和支持程度上有所不同。 概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑,主要用来验证、搜索和替换,验证和搜索用到较多(摘抄)。 正则表达式有两种形式一是纯文本 二是代码语...

weixin_44546452的博客 431

c#后台输出javascript语句和一些通用验证的类

c#后台输出javascript语句和一些通用验证的类    一个很不错的b/s前台输出弹出对话框、后台写javascript语句、后台直接关闭web页面及一个集成了常用验证的通用类,十分的方便.vss2003环境下适用.以下是代码片段:using System;using System.Web;using System.IO;using System.Security.Cryptogra

DotNET的春天 2215

手机号码正则_正则表达式真的很强大,可惜你不会写

专注于Java领域优质技术,欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文...

weixin_39695701的博客 342

正则表达式真的很强大,可惜你不会写

本文旨在用最通俗的语言讲述最枯燥的基本知识 文章提纲: 元字符 重复限定符 分组 转义 条件或 区间 正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文似...

killppyou的博客 699

php 正则匹配是否包含字符,PHP中判断字符串是否包含某个字符时,建议使用正则表达式preg_match()...

判断字符串中是否包含 某个字符时,在java中时直接使用 indexOf()来判断的在php中好像也要对应的,strpos(),stripos()不过每次我用的都很不爽,老是出现各种各样的小问题,而使用正则表达式,最起码让我觉得比较靠谱eg: 判断字符串中是否包含 星号*使用preg_match($rule,$string)$rule:是正则表达式,php中的正则表达式都得写在'/内容/'中,e...

weixin_28854171的博客 2508

分享一些很不错的学习&资源网站

暂时发布在首页,24小时内转移走,请dudu高抬贵手,呵呵^_^希望兄弟们也能把自己觉得不错的网址和简单介绍,留下,谢谢……1.Regular Expression Library 名副其实的正则表达式库,提供了很多关于正则表达式,在里头可以找到你需要的Regular Expression,是个不错的学习网站http://www.regexplib.com/Default.aspx 2.Webs...

weixin_33923762的博客 537

C#正则表达式小结

[转]C#正则表达式小结  地址: http://www.cnblogs.com/maxianghui/archive/2006/05/... 确实不错,感谢这位朋友   只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^/d{n}$"。只能输入至少n位的数字:"^/d{n,}$"。只能输入m~n位的数字:。"^/d{m,n}$"只能输入零和非零开头的数字:"^(

BigIcicle的专栏 431

C#网络爬虫开发

之前做onecat项目的时候,最开始的数据采集模块,就是用 C# 做的,同时还集成了 Chloe 作为 ORM,用 Nancy 做 HTTP 接口,结合 C# 强大的并发功能,做出来的效果不错。网络请求直接使用 .Net Core 标准库的 HttpClient,这个库要求使用单例,在 AspNetCore 里一般用依赖注入,不过这次简单的爬虫直接用 Console 程序就行。我要说但是,动态语言也有其局限性,笔者作为老爬虫带师,几乎各种语言都搞过,现在这个任务并不复杂,用我最喜欢的C#做小菜一碟~

xiaocai 1146

正则表达式真的很骚,可惜你不会写!!!

本文旨在用最通俗的语言讲述最枯燥的基本知识正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文似的字符串,替代了你用一大篇幅的if else代码来做一些内容校验。

BASK2311的博客 81
上一篇: 百分比的算法
下一篇: 教你如何迅速秒杀掉:99%的海量数据处理面试题
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值