正则几道题目

    技术2026-09-11  18

    2011-02-20 wcdj

     

    题目1:写个程序,从输入中读取数据,遇到包含wcdj字符串的行就打印出该行。 #! /usr/bin/perl while (<>) {# Ctrl-D结束 if (/wcdj/) { print; } }

     

    题目2:修改题目1,使程序对大小写不敏感。

    #! /usr/bin/perl # 方法一:使用字符集(效率高) while (<>) {# Ctrl-D结束 if (/[wW][cC][dD][jJ]/) { print; } } # 更简便的方法是,使用可选修饰符i,即,/wcdj/i # 方法二:使用择一匹配(如果太长,执行效率也可能会降低,取决于正则表达式引擎内建的优化策略) while (<>) {# Ctrl-D结束 if (/(w|W)(c|C)(d|D)(j|J)/) { print; } }

     

    题目3:写个程序,输出含有要求单词的行。要求的单词用大写字母开头,但并非全大写。 #! /usr/bin/perl while (<>) {# Ctrl-D结束 if (/[A-Z][a-z]+/) { print; } }

     

    题目4:写个程序,输出那些有两个相连且相同的非空格字符的行。 #! /usr/bin/perl while (<>) {# Ctrl-D结束 if (/(/S)/1/) {# /S字符集会匹配所有的非空白字符,而且括号可以使用反向引用/1来匹配紧跟着的同样的字符 print; } }

     

     

    题目5:写个程序,输出在输入数据中同时出现wcdj以及gerry的每一行。 #! /usr/bin/perl # 方法一:使用2个if语句判断 while (<>) { if (/wcdj/) { if (/gerry/) { print; } } } # 方法二:使用择一匹配(注意:没有逻辑与运算) while (<>) { if (/wcdj.*gerry|gerry.*wcdj/) { print; } }

     

    最新回复(0)