Idea内使用正则表达式替换功能简记
前言:工作上遇见过需要对某个实体类对象进行批量替换的操作,在对象的属性比较少的时候可以ctrl+c/v很快速地进行替换,但是一旦对象的属性多起来,这种纯粹的机械式劳动就会耗费大量的时间。
本文记录一下自己在日常工作中采取的正则替换策略以及搜集到的正则表达式知识,以便更好地学习和理解正则表达式。
放上一个正则表达式入门教程:正则表达式30分钟入门教程 作者:deerchao
场景1:
现在有一个实体类,需要将属性值和属性名提取成json格式来编写api,成品格式为:
{
"pageId": "页面ID",
"pageName": "页面名称"
}
以下是实体类:
public class CmsPage {
/**
* 页面名称、别名、访问地址、类型(静态/动态)、页面模版、状态
*/
//站点ID
private String siteId;
//页面ID
private String pageId;
//页面名称
private String pageName;
//别名
private String pageAliase;
//访问地址
private String pageWebPath;
//参数
private String pageParameter;
//物理路径
private String pagePhysicalPath;
//类型(静态/动态)
private String pageType;
//页面模版
private String pageTemplate;
//页面静态化内容
private String pageHtml;
//状态
private String pageStatus;
//创建时间
private Date pageCreateTime;
//模版id
private String templateId;
//参数列表
private List<CmsPageParam> pageParams;
//模版文件Id
private String templateFileId;
//静态文件Id
private String htmlFileId;
//数据Url
private String dataUrl;
}
首先将这些属性复制到一个临时的json文件里,并调出替换框
这里我使用的匹配规则是:
\/\/(.*)\n(.*) (.*) (.*);
这条正则表达式的含义:正则表达式里面的符号都需要反斜杠来转义,所以\/
就表示单条斜杠,(.*)
匹配斜杠后面的字符串,\n
匹配回车符。
\n匹配回车符会出现匹配不上的问题,可以打开文件→文件属性→行分隔符,选择LF
或按照如下图进行设置。
句子中使用了4个(.*)
,属性中文名和英文名分别为第一个和第4个,所以在替换公式中可以用$1
和$4
来代替,具体替换公式如下。
点击全部替换(replace All),然后加上花括号,就完成了。
嗯…… 看了会儿教程感觉自己对正则表达式的应用实在是太浅了,下面为正则表达式学习过程中的记录。
正则匹配中 ^ $
和 \b
的区别
^
和$
分别代表字符串的开始和结束,因此^\d$
只能匹配包含一个数字的字符串。\b
代表单词边界,其前后必须是不同类型的字符,可以组成单词的字符为一种类型,不可组成单词的字符(包括字符串的开始和结束)为另一种类型。
因此\b\d\b
可以匹配%3%
中的3,但不能匹配23
中的任意一个数字。
5 // ^\d$ 可匹配; \b\d\b可匹配
%2@!22$2$ // \b\d\b可匹配第一个和第四个2
264 //均不能匹配