
发表日期: 2021-04-20 10:15:38 浏览次数:164
河间网站推广【河间办理400电话】河间SEO优化、河间微信公众号APP客户端小程序开发、河间网站托管、河间APP开发
河间市,古称河涧、瀛州,河北省辖县级市,由沧州市代管,东与沧县、青县接壤,北与大城县、任丘市交界,西与肃宁县、高阳县相邻,南与献县相连。属于湖积冲积平原,地势自西南向东北逐渐降低,典型大陆性季风气候,受季风影响,四季分明。截至2015年底,辖20个乡镇,615个行政村 [1] ,总面积1333平方公里 [33] ,总人口88.2万人。1990年10月撤县设市。 [2-3]
河间市地处华北平原,盛产多种粮棉瓜果,尤以金丝小枣、天津鸭梨等著名。工业产品种类很多,化工、纺织、电缆均较突出,形成了以电线电缆、保温材料、汽车配件、建材、花卉、餐具为主的六大支柱产业。
2016年,河间市完成地区生产总值287.2亿元,增长8.2%。 [4] 2019年12月,成为全国乡村治理体系建设试点单位。2020年9月,入选河北省食品产业强县(市、区)(培育型)名单。
现在设R是正则表达式a|b,那么L(R )={a,b},并考虑L(R *)是什么。该语言还是含有ε,表示L(R )中字符串没有出现。R中的字符串出现一次就为L(R *)带来了{a,b}。出现两次就给我们4个字符串{aa,ab,ba,bb},3次出现就给了我们由a和(或)b组成长度为3的8个字符串,以此类推。因此L(R *)是所有由a和(或)b组成的任意有限长度的字符串。
正如我们在前面的内容中非正式提到的,正则表达式的3个运算符并、串接和闭包之间存在约定的优先级次序。这一次序如下。
1. 闭包(最高);
2. 然后是串接;
3. 然后是并(最低)。
因此,在解释任何正则表达式时,首先要为闭包运算符分组,也就是找出具有表达式形式(即如果存在括号的话,则它们是配对的)的紧邻某给定*左侧的最短表达式。可以给该表达式和相应的*加上一对括号。
接下来,要从左边起考虑串接运算符。对每个串接运算符,要找到紧邻其左侧的最小表达式并找到紧邻其右侧的最小表达式,再给这一对表达式加上括号。最后,要从左侧起考虑取并运算符。找到紧邻每个取并运算符左右的表达式,并这这一对中间有着取并符号的表达式周围加上括号。
考虑表达式a|bc*d。首先分析*。该表达式中只有一个*,而且在其左侧的最小表达式为c。因此可以把该*与他的操作数分到一组,就成了a|b(c*)d。
接下来,要考虑上述表达式中的串接。共有两次串接,一次是b和左括号之间的,另一次是在右括号和d之间的。首先分析第一次串接,我们看到b就是紧邻左侧的,而到右侧就必须到将右括号包括在内为止,因为表达式的括号必须是平衡的。因此,第一次串接的操作数分别是b和(c*)。给它们周围加上括号就得到表达式
a|(b(c*))d
对第二次串接来说,紧邻其左的最短表达式现在是(b(c*)),而紧邻其右的最短表达式是d。在给这次串接的操作数分组加上括号后,表达式就成了
a|((b(c*))d)
最后,必须考虑取并运算。该表达式中总共有一次取并运算,它的左操作数为a,而其右操作数就是上述表达式其余的部分。严格来说,必须为整个表达式再加上一层括号,得到
(a|(b(c*)d))
不过最外层的括号是多余的。
在本节最后,我们要给出一些更复杂的正则表达式。
可以将示例10.15中的思路扩展到“由符号a1、a2、…、an 组成的任意长度的字符串”以及如下正则表达式:
(a1|a2|…|an)*
例如,可以按照以下方式描述C语言标识符。首先,定义正则表达式:
letter=A|B|…|Z|a|b|…|z|_
这就是说,C语言中的“字母”包括大小写英文字母和下划线。同样,我们还定义了正则表达式:
digit = 0|1|… | 9
那么正则表达式
letter(letter|digit)*
就表示由字母、数字和下划线组成的所有不以数字开头的字符串。
现在来考虑一个更难写出的正则表达式:在示例10.2中讨论过的反弹过滤器问题。回想一下,我们描述了这样一种自动机,粗略地讲,就是只要输入的结尾是一列1,就会输出1。也就是说,只要在一行中看到两个1,就认为我们已经在一列1中,不过在确定看到的是一列1后,一个0的出现并不会让我们推翻这一结论。因此,每当输入的结尾有由两个1组成的序列时,只要它后面跟上的内容中每个0之后要么立即跟上一个1,要么是当前为止看到的最后一个输入字符,示例10.2中自动机的输出就是1。可以用如下正则表达式表示这种情况。
(0|1)*11(1|01)*(ε|0)复制代码
要理解该正则表达式,首先要注意到(0|1)*表示由0和1组成的任意字符串。这些字符串后面一定要跟上两个1,就如表达式11所表示的。因此(0|1)*11就是所有由0和1组成且结尾(至少)有两个1的字符串。
接下来(0|01)*表示所有由0和1组成,而且其中所有0后面都跟着1的字符串。也就是,该表达式语言中的字符串是以任意次序串接任意数量的字符串1和01构成的。尽管1让我们在任意时刻都可以向正在形成的字符串添加一个1,不过01强迫我们在任何0之后都加上一个1。因此表达式(0|1)*11(1|01)*表示所有由0和1组成的,以两个1后面加上其中的0都要立即加上一个1的任意序列结尾的字符串。而最后的因子(ε|0)表示“可选的0”,也就是说,刚刚描述的字符串后面可能还有一个0,也可能没有,要看我们的选择。

服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878