正则表达式小试牛刀

闲来无事,打开以前找工作时打印出的资料,说面试官怎么考正则表达式呢?

实际问题
比如你进了我们组工作,我们组老大对代码的格式要求很严格,要求左右小括号前后都有空格(仅仅举例)。
那么我给你一些源代码(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见数据库管理系统

常见数据库管理系统

xp修改时间同步服务器地址,xp时间同步服务器地址更换

xp时间同步服务器地址更换 内容精选换一换切换操作会改变保护组的容灾方向,将生产站点可用区的业务切换到容灾站点可用区,容灾站点可用区的业务切换到生产站点可用区。切换后数据同步不中断,容灾方向更改为从容灾站点到生产站点。您可以针对生…

APP技巧:电脑登录微信,要删除这5个文件,否则别人能查看聊天记录

在办公的电脑上,你会登录微信吗? 如果你有登录,那么就得注意了,电脑端微信有一个名为“保存聊天记录”的功能,通过它我们可查看到跟微信好友之间发送的图片、视频、文件等数据! 既然知道这么危险&#xff0…

Win10系统磁盘分区图文教程

当我们安装完Win10操作系统以后,无论你使用机械硬盘还是固态硬盘,你在我的电脑里面只能看到一个总容量大小的磁盘,并没有ABCEDFG这些分盘,我们应该如何将磁盘快速分区呢?今天小编就为大家来介绍一下。 首先我们找到我的…

服务器系统玩dnf,win7系统玩dnf提示正在连接服务器的解决方法

很多小伙伴都遇到过win7系统玩dnf提示正在连接服务器的困惑吧,一些朋友看过网上零散的win7系统玩dnf提示正在连接服务器的处理方法,并没有完完全全明白win7系统玩dnf提示正在连接服务器是如何解决的,今天小编准备了简单的解决办法&#xff0c…

MIUI 13:带来全新小部件,新增三大隐私保护功能等

MIUI系统可以说是小米的起家本钱,MIUI全球活跃用户在一个月前已经超过5亿,不过这两年在Bug、流畅性方面也存在不少争议。MIUI 13发布之前,小米也聊了聊MIUI的一些相关进展。MIUI系统负责人金凡表示,自己加了很多米粉,听…

仿盛大服务器列表不显示,最新高仿100%仿盛大传奇私服--传奇SF无法获得列表解决方法大全...

玩私服的玩家基本都遇到过打开登陆器无法获得列表,无法游戏的问题,这种情况多半是DNS解析的问题。你可以重启路由器和猫,如果没有猫和路由器,你就修复下DNS即可。方法1:点击电脑左下角---开始---运行---输入 CMD 回车 …

电脑技巧:电脑几种常见的系统故障解答

目录 一、win10电脑蓝屏的常见问题及解决方式 二、电脑驱动文件缺少问题及解决办法: 三、电脑开机进不了系统,在启动页面停止不动的问题以及解决办法 一、win10电脑蓝屏的常见问题及解决方式 1、蓝屏代码1: MACHINE-CHECK-EXCEPTION 原因分析&#xff1a…

mysql查看表结构 desc 表名;

查看表结构 语法:desc 表名;

项目vue2.0仿外卖APP(四)

组件拆分 先把项目搭建时生成的代码给清了吧 现在static目录下引入reset.css 接着在index.html引入&#xff0c;并且设置<meta> 有时候呢&#xff0c;为了让代码符合我们平时的编码习惯&#xff0c;我们可以在ESLint进行设置&#xff0c;如下&#xff1a; 回到入口js文件…

手机技巧:常见的Note、Max、Pro、Plus、Mate系列介绍,看完你就懂了!

目前主流的手机厂商都会以Note、Max、Pro、Plus、Mate来区分手机的品牌系列&#xff0c;可能会有一些朋友比较好奇&#xff0c;今天小编带大家来了解一下Note、Max、Pro、Plus、Mate这些代表的含义&#xff0c;为什么大的手机厂商青睐用这些单词来打造自己的手机品牌市场&#…

外键约束的作用

外键是该表是另一个表之间联接的字段 外键必须为另一个表中的主键 外键的用途是确保数据的完整性。它通常包括以下几种&#xff1a; 1 实体完整性&#xff0c;确保每个实体是唯一的&#xff08;通过主键来实施&#xff09; 2 域完整性&#xff0c;确保属性值只从一套特定可选的…

APP技巧:安卓原生跨屏协同终于来了,还能和 Windows「隔空投送」

谷歌在 CES 2022 上宣布了至少 13 种不同的新软件功能&#xff0c;从类似 AirPods 的快速切换到此前承诺过的软件&#xff0c;可以在 Chromebook 上镜像你的 Android 文本应用程序等。这是谷歌称为“Better Together”的计划的一部分&#xff0c;外界认为谷歌是想追赶苹果生态系…

事务的特性及事务的隔离级别(转)

原文&#xff1a;http://www.cnblogs.com/fjdingsd/p/5273008.html 本篇讲诉数据库中事务的四大特性&#xff08;ACID&#xff09;&#xff0c;并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作&#xff0c;那么该数据库必须要具备以下四个特性&#xff1…

操作系统:SFTP相关知识介绍

目录 1、SFTP是什么&#xff1f; 2、SFTP组成 3、SFTP验证连接方式 4、SFTP常用命令 4.1 登录 4.2 SFTP Shell 基本操作 4.3 下载服务器文件到本地 4.4 上传本地文件到远程服务器 今天给大家分享SFTP相关知识&#xff0c;希望对大家能有所帮助&#xff01; 1、SFTP是什么&#…