正则表达式之?、(?:pattern)、(?!pattern)、(?=pattern)理解及应用

强化学习入门8—深入理解DDPG 本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG。DDPG是google DeepMind团队提出的一种用于输出确定性动作的算法,它解决了Actor-Critic 神经网络每次参数更新前后都存在相关性,导致神经网络只能片面的看待问题这一缺点。同时也解决了DQN不能用于连续性动作的缺点。 阅读详情

今天朋友问我一个问题,是这样子的,通过正则表达式匹配html标签input包含hidden的字符串,具体如下:

[java]  view plain  copy
  1. "<input type=\"hidden\" id=\"xxx\" name=\"xxx\" value=\"xxx\" /><input type=\"text\" id=\"xxx\" name=\"xxx\" value=\"xxx\" />"  

匹配下来,应该输出:

[java]  view plain  copy
  1. "<input type=\"hidden\" id=\"xxx\" name=\"xxx\" value=\"xxx\" />"  

读了这个问题之后,觉得挺简单的,直接利用基本的语法包含头<input   尾 /> 还有hidden 不就OK了么?于是写出了下面的正则表达式:

[java]  view plain  copy
  1. "<input.*?hidden.*?/>"  

恩,不错,符合基本的题意,而且运行结果正确,可随意想到要是那个hidden在后面那个input中是什么结果呢?于是测试发现结果如下:

[java]  view plain  copy
  1. <input type="text" id="xxx" name="xxx" value="xxx" /><input type="hidden" id="xxx" name="xxx" value="xxx" />  

都输出了,这是神马情况啊,仔细分析了下,在匹配过程中在第一个inpu中没有找到hidden,但是第二中找到了,接着一直往后匹配,ok,匹配结束,输出结果如上。

哦,那是否可以去判断结束符号/>,即结果中不包含/>,所以立即想到了(?!pattern),怎么用呢,先查看下其具体的解释(JDK6.0文档):

[java]  view plain  copy
  1. (?=X) X, via zero-width positive lookahead   
  2. (?!X) X, via zero-width negative lookahead   
  3. (?<=X) X, via zero-width positive lookbehind   
  4. (?<!X) X, via zero-width negative lookbehind   

不太懂,不过看了下@Kevin Yang的文章使用正则表达式找出不包含特定字符串的条目后,了解前瞻(Lookahead)和后顾(Lookbehind)的概念,拷贝大牛点东西

这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方。如下图所示:

正向前瞻逆向前瞻

所谓的前瞻就是在正则表达式匹配到某个字符的时候,往“尚未解析过的文本”预先看一下,看是不是符合/不符合匹配模式,而后顾,就是在正则引擎已经匹配过的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我们又称为肯定式匹配和否定式匹配。

了解了这个概念之后,上面JDK6.0文档的解释就一目了然了,哈哈,下面继续写正则表达式,不包含/>,那么表达式如下:

[java]  view plain  copy
  1. <input.*?hidden((?!/>).)*/>  

恩恩,这次应该没问题了吧,赶紧测试:

[java]  view plain  copy
  1. <input type="text" id="xxx" name="xxx" value="xxx" /><input type="hidden" id="xxx" name="xxx" value="xxx" />  

。。。。。。。。。还是这样,啥问题啊,淡定,再仔细想想,这个是前瞻,那么匹配到hidden时,再往前看,没有/>,接着往下走,匹配结束了,结果还是这个。。。。。

那后瞻呢?来试试,匹配到hidden时,再往后看,有/>,哈哈,赶紧的,不匹配,啥都没有了。。。。。可是事实有满足条件的input啊抓狂。

再想想其他方法奋斗,先简单点的来,先不判断有无hidden,解析出这两个input,那么表达式如下:

[java]  view plain  copy
  1. <input.*?/>  

测试下,结果如下:

[java]  view plain  copy
  1. <input type=\"hidden\" id=\"xxx\" name=\"xxx\" value=\"xxx\" />  
  2. <input type=\"text\" id=\"xxx\" name=\"xxx\" value=\"xxx\" />  
哈哈,解析了两条,那么在这个结果的基础上再通过一个正则表达式匹配下不就ok了么?,赶紧试试,第二个表达式如下:

[java]  view plain  copy
  1. .*hidden.*  
再次解析,结果ok啦,恩恩~~,可是,问题是人家就是只要一个正则表达式搞定啊!!!!!好吧,再想想,再想想,有了:

我可以通过特殊字符串 >< 来判断下,让字符串不包含><。恩,试试,那么这个表达式如下:

[java]  view plain  copy
  1. <input[^(>.*?<)]*?hidden[^(>.*?<)]*?/>  

这个貌似不错,先测试下,结果如下:

[java]  view plain  copy
  1. <input type=\"hidden\" id=\"xxx\" name=\"xxx\" value=\"xxx\" />  
  2. <input type=\"text\" id=\"xxx\" name=\"xxx\" value=\"xxx\" />  

哈哈,可以了啊,那再试试其他的测试用例,都可以,最后有个用例是这样子的:

[java]  view plain  copy
  1. "<input type='hidden' name='HTTP_REFERER' value='http://haiyuyangguang.soufun.com/bbs/5010939724~-1//515494454_515494454.htm' />  <input type='hidden' value='0' name='isfromspace' />"  

测试结果如下:

[java]  view plain  copy
  1. <input type='hidden' value='0' name='isfromspace' />  

Why?为啥这样子?淡定,分析下,没有解析出来第一个input,是因为它里面有特殊的字符吗?看看,与/、:、~、-、.有关吗?一个一个删了再测下,最后删了. 结果两条,把其他的符号还原测试下,还是两条,那就是与.有关系了,那表达式哪里出问题了?找找,哦,是那个 “.” 的问题,看看解释

[java]  view plain  copy
  1. .     Any character (may or may not match <u><strong>line terminators</strong></u>)   

[java]  view plain  copy
  1. <u><strong>Line terminators</strong></u>  
  2.   
  3. A line terminator is a one- or two-character sequence that marks the end of a line of the input character sequence. The following are recognized as line terminators:  
  4.   
  5.     A newline (line feed) character ('\n'),  
  6.     A carriage-return character followed immediately by a newline character ("\r\n"),  
  7.     A standalone carriage-return character ('\r'),  
  8.     A next-line character ('\u0085'),  
  9.     A line-separator character ('\u2028'), or  
  10.     A paragraph-separator character ('\u2029).   

没有与.相关的,不过想到换个匹配,表达式如下:

[java]  view plain  copy
  1. <input[^(>[\\s\\S]*?<)]*?hidden[^(>[\\s\\S]*?<)]*?/>  

测试下,ok!没问题了,看来[\\s\\S]比.更强大啊!

问题解决,不过不知道自己写的这个是不是遇到其他的测试用例会有问题,或者有更好的、更强大的匹配。欢迎大牛指正!

磁环电感参数计算 电感饱和是指当电感中的电流超过一定阈值时,电感中的磁场无法继续增加,而是达到一个饱和状态,导致电感的感应电动势减小或消失。电感通常由线圈组成,当通过线圈的电流不断增加时,线圈内部的磁场也随之增加。然而,当电流达到一定程度时,线圈的铁芯磁化达到饱和,无法进一步增加磁场强度。电感饱和的阈值取决于电感的结构、材料和尺寸等因素。通常情况下,电感的额定电流会标明其饱和电流值。一旦电感中的电流超过了饱和电流,电感将饱和并出现异常行为。当我们谈论电感饱和的时候,实际上是在谈论磁芯饱和——空心的电感永远不会饱和。 阅读详情

相关推荐

MT6771 Android13 背光曲线调试与光感数据校准实战

本文详细介绍了MT6771平台在Android 13系统上进行背光曲线调试与光感数据校准的实战经验。针对高亮度环境下背光误调节问题,深入分析了光感数据上报机制,并提供了驱动层配置修改、背光曲线优化及常见问题解决方案,帮助开发者快速定位并解决类似问题。

moon9的博客 288

正则表达式中(?:pattern)、(?!pattern)、(?<=pattern)和(?<!pattern)

(?:pattern)   ()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推   (?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来 import re a = "123abc456ww" pattern = "([0-9]*)([a-z]*)([0-9]*)" print(re.search(pattern,a).group(0,1,2,3)) pattern = "(?:[0-9]*)

行者无疆的博客 1161

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

Kotlin中 ?、!!、?:、:: 、->、== 符号的简单说明

Kotlin 中新增了一些符号,先记录在案,方便理解和学习。 1. ? 和 !! "?"加在变量名后,系统在任何情况不会报它的空指针异常。 "!!"加在变量名后,如果对象为null,那么系统一定会报异常! 上述是两个符号的简单概念,为了更好的解释这两个概念,我们先从java代码入手,如下例: ArrayList<String> myList = null; // 创建一个nu...

Sindyue的博客 6万+

ADS8681数据手册没讲透的细节:SPI时序、量程切换与电压换算的避坑指南

本文深入解析ADS8681数据手册未提及的SPI时序优化、量程切换陷阱与电压校准技巧。针对树莓派5与ADS8681的SPI通信问题,提供CPOL/CPHA配置建议;详解量程切换的位操作玄机与寄存器配置流程;并提出三步校准法应对非理想供电环境,帮助开发者提升ADC测量精度。

weixin_29178069的博客 523

ENVI 5.3与IDL 8.5安装指南:从下载到激活的完整流程

本文提供了一份详细的ENVI 5.3与IDL 8.5安装教程,涵盖从获取安装包、运行主程序、安装许可证到关键文件替换的完整流程。指南重点解决了激活过程中的常见问题,并分享了个人实践经验,旨在帮助用户,特别是遥感图像处理初学者,一次性顺利完成软件部署,为后续的科研与开发工作奠定基础。

weixin_29213827的博客 550

正则表达式(?:pattern)

//(?:pattern):取消当前的这个小括号的后向引用功能, //即:后面的"\1"后向引用时候,引用的是"PHP"这个字符串, //而不是"Chapter|Section"这个字符串(这个正则表达式中虽然有两个括号,但却引用的是"PHP") $pattern = "/^(?:Chapter|Section) (PHP) \1 [1-9][0-9]{0,1}$/"; $str = "Chap...

hello PHP的博客 688

基于java实现的弹幕视频网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示弹幕视频网站,在弹幕视频网站可以查看首页、视频信息、商品信息、论坛信息、我的、跳转到后台、购物车、客服等内容前台首页界面图登录,通过登录填写账号、密码等信息进行登录操作登录界面图视频信息界面图。

DC5621的博客 1333

Java 正则表达式的基本使用【Pattern】

正则表达式是一种强大的文本处理工具,可用来匹配、查找、替换复杂的文本模式 ···

低调,谦虚,自律,反思,成长! 1786

手把手教你学Simulink——基于自动驾驶辅助系统的场景实例:车道保持辅助系统(LKA)的仿真与实现

本文通过Simulink实例讲解车道保持辅助系统(LKA)的实现方法。首先介绍LKA从预警到主动控制的技术演进,阐述其系统架构、核心组件和工作原理。重点演示基于自行车模型的车辆横向动力学建模过程,以及使用线性二次调节器(LQR)设计横向控制器的详细步骤。教程包含四个仿真场景测试,分析关键指标如控制精度、舒适性和响应性。最后探讨LKA技术的发展方向,强调人机协同的安全理念。该实例为自动驾驶辅助系统开发提供了完整的Simulink实践方案。

MHD0815的博客 182

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道

在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。

邓邓子的博客 6144

正则表达式(?=pattern) (?!pattern) (?:pattern)的理解

正则表达式(?=pattern)(?!pattern)(?:pattern)的理解 学习JAVA正则表达式时,(?=pattern)(?!pattern)(?:pattern)这类东西看着就挺难理解,而且官方释义更是越看越不懂。查阅资料后,总结如下。 环视 (?=pattern)与(?!pattern)属于一类,在正则表达式中叫环视。 “环视”这个词从字面理解就是确定“周围环境”。环视一共有四种:...

xichanjuan6481的博客 6706

CATIA二次开发——遍历几何图形集下的轴系及控制轴系生成位置

CATIA二次开发——轴系相关问题1.遍历几何图形集下的轴系2.解决轴系生成位置的问题 1.遍历几何图形集下的轴系 近期遇到的问题:遍历轴系的时候发现,AxisSystem属性的轴系只有放在轴系集合下,才能被找到,放在几何图形集或其他位置均不能被找到。本来想遍历几何图形集下的轴系元素,但是发现没有对应的属性,只能查找 几何图形集、几何元素、草图等元素,无法直接遍历轴系。 解决办法:(加入选择集,在选择集中筛选轴系类型) HybridBody axisHB = activePart.HybridBodies

WorkMan的博客 2731

正则表达式中的捕获非捕获匹配(?:pattern)(?<=pattern)

正则表达式中的非捕获匹配在正则表达之使用中,经常会用到捕获匹配,即使用 ()进行匹配的分组会被保存在当前的执行环境变量中,从左到右以分组的括号为标志,依次编号为1,2,…,在需要时可以直接使用 \1, \2…来进行引用.而在一些匹配场景中其实保存这些变量并没有任何的意义,这时候就需要用到非捕获匹配. (?"pattern)表示一个非捕获分组,和捕获分组比起来,非捕获分组只会进行单纯的模式匹配并不会将匹配到的值进行保存.例如,Windows(?:95|98|NT|2000)可以匹配Windows95,Wind

键盘的起始页 1027

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【正则】正则表达式之(?:pattern)、(?=pattern)、(?!pattern )、(?<=pattern )、(?<!pattern )

正则表达式之(?:pattern)、(?=pattern)、(?!pattern )、(?

想和派大星一样 454

深度学习工具包 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")

正则表达式 (?:pattern)(?=pattern)

(?:pattern)(?=pattern)、(?=pattern)、(?!pattern)、(?<=pattern)和(?<!pattern) (?:pattern) pattern:表示表达式 # 1. (?:pattern) """ ()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推 (?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来 [\u4e00-\u9f..

yu121380的博客 2372

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

正则表达式中匹配开头关键词和结尾关键词

主要用到的功能(?:pattern)、(?=pattern)、(?!pattern)、(?<=pattern)和(?<!pattern) 1、(?:pattern) ()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推 (?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来 import re a = "123abc456ww" pattern = "([0-9]*)([a-z]*)([

进击的豌豆的博客 6983

正则表达式-- (?:pattern)与(?=pattern)的区别

学习正则表达式时,对(?:pattern)与(?=pattern)的区别做个记录。 官方定义 (pattern) : 匹配 pattern 并获取这一匹配,所获取的匹配可以从产生的 Matches 集合得到。 (?:pattern) :匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 (?=pattern) :正向预查,在任何匹配...

shashag 9043

(pattern),(?:pattern),(?=pattern)(?!pattern)不明白,让我豁然开朗的文章

学习正则表达式时,这几个(pattern),(?:pattern),(?=pattern),(?!pattern)不明白* (pattern)匹配pattern并捕获该匹配的子表达式.可以使用 $0...$9属性从结果"匹配"集合中检索捕获的匹配.若要匹配括号字符(),请使用"\("或者"\)".* (?:pattern)匹配pattern但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以...

warmsmellofcolitas的博客 4433

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

https://blog.youkuaiyun.com/csm0912/article/details/81206848 参考文献 http://defindit.com/ascii.html https://www.runoob.com/regexp/regexp-syntax.html 正则表达式中?=和?:和?!的理解 原创这个昵称没有被占用吧 发布于2018-07-25 18:01...

mfkpie的专栏 2万+

正则表达式详解及应用

正则表达式是一种字符序列,它定义了一个搜索模式。主要用于字符串模式匹配,如检索、替换、验证字符串。:匹配任意字符(除换行符)。\d:匹配任意数字,等价于[0-9]。\D:匹配任意非数字,等价于[^0-9]。\w:匹配任意单词字符(字母、数字、下划线),等价于。\W:匹配任意非单词字符,等价于。\s:匹配任意空白字符(空格、制表符、换行符)。\S:匹配任意非空白字符。正则表达式是一个强大且灵活的字符串处理工具,通过本文的介绍和示例,相信你已经掌握了正则表达式的基本知识和常见应用。

无限进步 2884

正则表达式(?=pattern)(?!pattern)(?:pattern)的理解

我们模拟下正则表达式的处理过程(当然,我暂时没有学习正则表达式引擎的原理,不确定是否就是完全正确的过程,但是有助于理解):引擎从左向右扫描,扫描到“ABCDEFG”中的CD时,第一次扫描到“CD”字符,然后执行环视,(?因为,扫描到“CD”后,引擎在环视的过程中并没有消耗后面的“EF”字符,引擎仍从上次扫描的位置接着扫描,显然“D”后面的字符不是“G”,因此匹配失败。:pattern)是和(pattern)相对应的,他们的区别在于:(pattern)是获取匹配,pattern内容会出现在匹配结果的集合中;

orchisy的专栏 326

善用Pattern提高你的应用处理正则表达式的效率(Java)

举个简单了例子,在一个需要用于注册登录的b/s模式的应用中,在浏览器验证用户注册表单的合法性是必须的,但你为了防止hacker,在服务器再验证一次肯定也是必须的。 题目:在服务器端验证邮箱是否合法:通常你可能会这样写: public boolean checkEmailLegal(String temp) { //temp = "ddenfj#@fe_dw.comw"; r

Devil_cpp的专栏 8940

常用正则表达式,input设置pattern

pattern用于验证表单输入的内容,通常HTML5的type属性,比如email、tel、number、data类、url等,已经自带了简单的数据格式验证功能了,加上pattern后,前端部分的验证更加简单高效了。pattern的属性值要用正则表达式。常用的正则表达式:信用卡 [0-9]{13,16}银联卡 ^62[0-5]\d{13,16}$:[0-9]{3})?$万事达:^5[1-5][0-9]{14}$QQ号码: [1-9][0-9]{4,14}

tongluren381的博客 3116
上一篇: JS判断元素是否在数组内
下一篇: javascript常用方法函数收集
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值