正则表达式简略

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

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

拆解步骤

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

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

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

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

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

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

参考

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

原文地址:https://www.cnblogs.com/wyy5552/p/9856644.html