正则表达式简略

今天做多语言,需要将代码中的汉字找出来替换。百度了一下别人怎么做的,推荐正则:
^((?!(\*|//)).)+[\u4e00-\u9fa5]

后面的勉强还可以理解,可前面一对对的括号就看不懂了,((?!(\*|//)).)跟天书一样。这里对上面的正则表达式进行拆解。

拆解步骤

(\*|//) 表示 \*或者//开头,代码中注释都是这么开始的

?!(\*|//),这里先理解一个概念:

前瞻:
exp1(?=exp2) 查找exp2前面的exp1
后顾:
(?<=exp2)exp1 查找exp2后面的exp1
负前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
负后顾:
(?<!=exp2)exp1 查找前面不是exp2的exp1

ok,上面的说明可以看出,我们用到的是 负前瞻,意思就是不是 \*或者//

^表示以后面的开头,则:
^((?!(\*|//)).),可以直白翻译成 以(不是\*或者//)开头的任意字符

^((?!(\*|//)).)+[\u4e00-\u9fa5]表示查找非注释的代码内容中的汉字

参考

正则表达式的() [] {}
搜索代码中的中文字符串
正则表达式中?=和?:和?!的理解

posted on 2018-10-26 15:35  老豆浆  阅读(139)  评论(0编辑  收藏  举报

导航