郑州做网站的论坛,wordpress 忘记管理员密码,温州专业营销网站公司,中国航空港建设总公司网站正则表达式的作用
正则表达式#xff0c;又称规则表达式,#xff08;Regular Expression#xff0c;在代码中常简写为regex、regexp或RE#xff09;#xff0c;是一种文本模式#xff0c;包括普通字符#xff08;例如#xff0c;a 到 z 之间的字母#xff09;和特殊字…正则表达式的作用
正则表达式又称规则表达式,Regular Expression在代码中常简写为regex、regexp或RE是一种文本模式包括普通字符例如a 到 z 之间的字母和特殊字符称为元字符是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串通常被用来检索、替换那些符合某个模式规则的文本。
如何快速上手
1、打开 学习、构建和测试正则表达式网址RegExr: Learn, Build, Test RegEx
2.我们点开Cheatsheet(备忘单) 可以看到一共分成了五个部分
字符类
表达式含义.任何字符除换行符外\w \d \s单词、数字、空格\W \D \S非词、数字、空格[abc]a、b或c中的任何一个[^abc]非 a、b或c[a-g]a到g之间的字符
锚点定位
表达式含义^abc$字符串的开头/结尾\b \B单词边界字符、单词非边界字符
转义字符
表达式含义\. \* \\如果需要匹配它们本身而不是它们的特殊含义则需要在它们前面加上反斜杠 \ 进行转义\t \n \rtab 换行回车
组和环
表达式含义(abc)捕获组\1对组#1的反向引用(?:abc)非捕获组(?abc)正向前看(?!abc)负向前看
词量与交替
表达式含义a*aa?0 个或多个、1 个或多个、0 或 1 个a{5}a{2,}恰好五个、两个或更多a{1,3} 一到三之间 a?a{2,}?尽可能少的匹配ab|cd匹配 ab 或 cd 表达式介绍完了我们举个例子来使用一下这些内容
Unity的Animator有这么一个接口
public void Play(string stateName, [DefaultValue(-1)] int layer, [DefaultValue(float.NegativeInfinity)] float normalizedTime)
我们希望在代码中调用的地方全部改为自身定义的 PlayAnimation
public class AnimCacheManager
{public static void PlayAnimation(Animator animator, string animationName, int layer -1, float normalizedTime 0,float speed 1){if (animator null){return;}animator.speed speed/MatchSpeedMgr.Instance.SpeedValue;animator.Play(animationName, layer, normalizedTime);}
}
首先我们需要找到.Play前的字符串因为变量名可以有数字所以
用 \S可以表示配空字符用组和 * 表示一个或者多个字符组组成的变量名 (\S*)\.Play 接下来就是匹配括号里的内容了
首先补齐 ();应为是组符号所以匹配(自生就需要 \转义 得出 (\S*)\.Play\(\);
Play()括号中有 :数字,字符所以我们可以匹配 任何字符除换行符外可以使用 .* ,然后用组 ()组合 得出.*
加入到上面的正则表达式中就有 (\S*)\.Play\((.*)\); 筛选出来符合的字符串之后就是替换成我们自己的接口字符串 AnimCacheManager.PlayAnimation($1,$2); $1 表示匹配的第一个组 : (\S*) $2 表示匹配的第二个组 :(.*) 我们拿 JetBrains Rider 来做测试 可以看出字符串替换成功。
总结
1.我这边举的例子算比较复杂的但是拆解之后可以看出并不难
2.当你不理解含义的时候直接点击参考理解即可 3.合理的使用正则表达式到工作中可以大大的提高工作效率
4.正则表达式回了就不难
5.不用死背表达式忘了就来网址上找就行