码迷,mamicode.com
首页 > 其他好文 > 详细

虎书课后习题【第二章】

时间:2015-03-08 22:56:01      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

写着玩,不保证对,尽可能使用较短的正则表达式来完成。

正则表达式用的是自制正则表达式测试器(逃。

  • 2.1
    • 在b出现之前可以是a或c,而a和c没有限制,确保出现a之后就可以出现任意字符,所以应该是c*a+[a-c]*
    • 偶数个a……而且位置不确定,但是呢,可以保证的是a的数量是2的倍数,所以可以将两个a分为一组,把0也算上吧,于是就是([bc]*a[bc]*a[bc]*)*,当然吧前后两个[bc]*拿出来应该也是可以的(然后发现自制的测试器出bug了,回头再改……先用VS吧……)
    • 这个就是能除4就好了,虽然是二进制的……4的二进制是100,乘4的话就是左移两位,所以末尾是两个0就好,不算0的话就是0*1+[01]*00,算0的话更短[01]*00(前面0对数字没影响所以也算上)
    • 又是二进制,还是比大小,先确定至少是六位,要比101010,101100,110000都大,就可以得出(10101)、(1011)、(11)、(1)这四个前缀,换行换行换行,(10101[01]+)|(1011[01]{2,})|(11[01]{4,})|(1[01]{6,})
    • 不包含baa,还是连续的……所以就用条件查找吧,任意字符串,前后都不包含(baa)就好,[a-c]*(?!(baa))[a-c]*|[a-c]*(?<!baa)[a-c]*
      •   P.S. 这个不确定
    • 这题题目没看懂,我先找找小学语文课本;如果只是匹配十进制或八进制的话,就是(0?[0-7]+)|([1-9]+\d*)
    • 数学问题不会(捂脸)
  • 2.2
    • 这题涉及到自动机理论什么的,由于我不是很熟所以先略过吧
  • 2.3 直接用正则表达式写好了……
    • [01]{4}
    • a(a{5})*
    • [(0*)((101*01)*)]*
  • 2.4
    • 不方便画,先略过

虎书课后习题【第二章】

标签:

原文地址:http://www.cnblogs.com/LzxHehehe/p/4322328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!