一段正则记录

一段正则记录

需要匹配如下内容中的路径

INFO Created: ~/Desktop/blog/source/_posts/2017-7-24-新文章.md

观察可得如下链接是我们需要的

~/Desktop/blog/source/_posts/2017-7-24-新文章.md

首先匹配最前面的~,如果系统输出的路径是/,只匹配~就会匹配失败,所以就需要匹配~或者/可得规则[/|~]
然后观察后面的,最明显的就是有很多的字母,大小写都有,不要慌,那就是规则[A-Za-z]
当然还是数字[0-9]
整合一下[A-Za-z0-9]

 

上面的似乎只能匹配字母和数字,那遇到路径中的/如何呢?还是得处理的[\/],这里需要转义一下。当然还有_-.都需要转义一下。
再整合一下[A-Za-z0-9\/\.\_\-]

最刺激的就是遇到中文了,中文咋整?
[\u4e00-\u9fa5]就可以解决。
然鹅,这并不能解决多个中文,难道加个*。很显然,这里有点想当然了。在字母和数字中处理加个*还是非常有用的,这里加个*它会把中文的符号空格都给匹配出来。
这里需要用到[\u4e00-\u9fa5]{1,} # 匹配至少一个中文

然后整合一下就是下面这个了[/|~][A-Za-z0-9\/\.\_\-[\u4e00-\u9fa5]{1,}]*

在上面,中文变成了待选项,就可以匹配到中文了。

不过在shell中,这个中文匹配并不能用~

Leave a Reply

Your email address will not be published. Required fields are marked *