四平网站建设哪家好,网站做一年了没做301,网站建设盈利模式,三合一网站制作公司闲来无事#xff0c;打开以前找工作时打印出的资料#xff0c;说面试官怎么考正则表达式呢#xff1f;实际问题#xff1a;比如你进了我们组工作#xff0c;我们组老大对代码的格式要求很严格#xff0c;要求左右小括号前后都有空格#xff08;仅仅举例#xff09;。那… 闲来无事打开以前找工作时打印出的资料说面试官怎么考正则表达式呢实际问题比如你进了我们组工作我们组老大对代码的格式要求很严格要求左右小括号前后都有空格仅仅举例。那么我给你一些源代码(c/c,java)你来检测并修正这些不合规则的代码你有两天时间你怎么做简单说下面(1)是给你的输入(foo.c), (2)是正确的输出。(1) foo (bar ( new Point(x, graph.getY()) ));(2) foo ( bar ( new Point ( x, graph.getY ( ) ) ) ) ;答案:一条sed命令即可搞定 1 sed -i -r s/([^\ ])([\(|\)])/ \1 \2/g
2 s/([\(|\)])([^\ ])/\1 \2/g foo.c
3
4 或者放一行(不建议)
5 sed -i -r s/([^\ ])([\(|\)])/\1 \2/g;s/([\(|\)])([^\ ])/\1 \2/g foo.c 解释: sed - 按行处理文件的文字处理工具 -i - (in place) 替换文件本身 -r - (regexp-extended) 使用扩展的正则表达式 () - 分组 [^\abc] - 除a,b,c集合以外的一个字符 \1 - 引用分组, 依次到\9 g - (global)对每一行找到的匹配全部替换 a|b - 或运算符匹配两个字符中的一个补充说明:看了资料上给的标准答案:1. 使用Unix命令如sed(利用正则表达式)2. 其他的编辑器利用正则表达式替换3. 快速写一个ruby脚本4. 找个IDE格式化一下任何一种方法面试者都要解释清楚怎么做的才行。例如在vim里面可以通过两次替换做到(需要注意()是字符, \(\)才是正则表达语法, []|都是相同): :%s:\([(|)]\)\([^ ]\):\1 \2:g :%s:\([^ ]\)\([(|)]\):\1 \2:g更多更全面的正则表达式介绍可以参考博文:1.有错别字但讲得挺全面: http://www.cnblogs.com/helloczh/articles/1648029.html 转载于:https://www.cnblogs.com/xianzhon/p/6246734.html