设为首页 - 加入收藏
您的当前位置:主页 > 教程 > 平面设计 > 正文

九五至尊娱乐场不到40行JS代码如何构建正则表达

来源:未知 编辑:九五至尊娱乐场 时间:2017-12-11
九五至尊娱乐场,95998888九五至尊在线是一个全自主研发的游戏平台,在九五至尊娱乐每天还有成千上万的在线会员与您共享激情!九五至尊娱乐场老品牌值得信赖!

  【IT168 评论】近日,笔者偶尔发觉了一篇文章,Rob Pike正在C中实现了一个简单的正则表达式引擎,而Github上的nadrane大神将他的代码转换为Java并添加了测试规范,以便法式员能够通过此建立一个简单的正则表达式引擎。法则和处理方案能够正在GitHub官网找到(,以下是该项目标简单引见:

  第一步是编写一个函数,它接管一个字符模式和一个字符文本字符串,并前往一个布尔值来指示它们能否婚配。.(留意,这里有个点)模式被认为是通配符,能够婚配任何字符。

  现正在,我们要添加对更大长度的模式和文本字符串的支撑。我们只考虑一个长度不异的pattern/text对。我可巧晓得该处理方案用递归很是适合天然,我们正在pattern/text组合的持续字符对上频频挪用matchOne。

  上面的代码正在整个pattern/text 对中逐一字符前进,它起首将模式[0]取文本[0]进行比力,然后将模式[1]取文本[1]进行比力,并继续将模式[i]取文本[i]进行比力,曲到i === pattern.length - 那么我们晓得模式不婚配文本。

  添加对特殊模式字符$的支撑,它答应婚配字符串的末尾。该处理方案只需要添加一个额外的婚配功能。

  添加对特殊模式字符^的支撑,它答应婚配一个字符串的开首,接下来将引见一个称为searh的新功能。

  这个函数将成为代码的新入口。到目前为止,只是正在文本起头时才婚配模式,通过强迫用户以^来起头这个模式。可是,若何支撑文本中呈现的其他模式呢?

  若是用户起头没有指定模式婚配文本,并但愿正在文本内每个可能的起始点搜刮该模式。若是模式不以^起头,我们将默认这种行为。

  第一步是点窜婚配来检测?字符的位置,然后委托给matchQuestion函数,我们将很快定义它。

  我们来考虑第一种环境,我们若何查抄文天性否婚配除?以外的所有内容。换句话说,我们若何查抄字符?前的内容,我们从模式中删除两个字符(第一个字符是?前面的阿谁,第二个是?本身),并挪用婚配功能。

  若是文本[0]取pattern [0]婚配,而且文本的其余部门(减去matchOne婚配的部门)取模式的其余部门婚配,那么请留意,我们能够像如许沉写代码:

  关于后一种方式我喜好的一件事是,boolean OR使得它清晰地表白两种环境,此中任何一种可能都是准确的。

  因为有两种环境导致婚配(0次或多次婚配),我们晓得matchStar能够用一个booleanOR来实现。此外,matchStar的环境1取matchQuestion的环境1完全不异,而且能够利用match(pattern.slice(2),text)不异地实现。这意味着只需要制定满脚案例2的表达式。

  利用*字符本身答应模式呈现正在字符串中的任何处所。前面的*暗示任何数量的任何字符都能够呈现正在但愿婚配的模式之前。

  这个代码有一个小错误,但做者选择忽略,不考虑文本是空字符串的环境。目前当text ===时,text.split(“”)将前往[],而且不会恰当地挪用match。

相关文章:

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

九五至尊娱乐场 - 老品牌值得信赖 联系QQ:498872301 邮箱:498872301@qq.com

Copyright © 2012-2017 九五至尊娱乐场 版权所有

Top