宝哥软件园

正则表达式分析-替换原理( NET)

编辑:宝哥软件园 来源:互联网 时间:2021-10-29

首先是开场。

最近经常用替换,我就整理一下。这里我想分享的是正则表达式中的替换原则。首先我要声明,这里提到的替换原则就是中正则表达式的替换原则。NET。先看替代的定义。替代是只能在替代模式中识别的语言元素。它们使用正则表达式模式来定义用于替换输入字符串中匹配文本的全部或部分文本。替换模式可以包含一个或多个替换和文本字符。其实个人总结的替换大致是这样的。替换内容始终是原始文本的内容。文本由正则表达式匹配,原始文本由组名或组号替换。替换位置是正则表达式匹配的内容。还有,我前面写了三篇关于规律性的文章。最近用了替换内容,详细分享一下~。好了,我们不多说了。言归正传~

二、置换原则。下表中的替换元素定义如下:

替换

解释

$数字

包括由替换字符串中的数字标识的捕获组匹配的最后一个子字符串,其中数字是十进制值。

${ name }

包括将字符串替换为(?由名称指定的命名组匹配的最后一个子字符串)。

$$

在替换字符串中包含单个“$”文本。

$

在替换字符串中包含整个匹配的副本。

$`

包括替换字符串中匹配项之前的输入字符串的所有文本。

$'

替换字符串中的匹配项后,包括输入字符串的所有文本。

$

包括替换字符串中捕获的最后一个组。

$_

在替换字符串中包含整个输入字符串。

(1) $ number替换元素。

通过一系列的例子,说明了这些正则表达式的用法和替换原则。首先我们需要提出一个要求,要求的内容是把一串匹配的数字变成几千位数。例如,如果我们输入一个金额为123,456,789的字符串,我们如何将其转换为123,456,789的形式?按照我在开篇总结的,首先要把数字3和6匹配起来,然后把3换成3,把6换成6,这样才能达到预期的效果。但是需要注意的是,匹配这个数字的前提条件是下面的数字必须是三个数组的一系列数字,比如456789、(456)和(789),这是3之后的两个三位数。如果我们只匹配一个字符并把它放在一个组中,那么数字后面是一个或多个三位数的组就是(d)。这将使用零宽度断言,从而得出以下规律(d)(?=(d{3})(?d)),正则表达式就这样完成了,下一步是分析和替换它。让我们看看什么正则表达式匹配。

上图显示整个正则表达式中有两个匹配的内容,一个是匹配3,另一个是匹配6。将正则表达式的模式调整为替换模式。替换图案后,可以用上表第一种方法替换,即可以将3或6分为组号、组0或组1。请详细查看下图:

其实这里总结的替换原则是根据匹配的内容进行替换,因为第一张图片中有两组匹配的内容,第一组之后的内容是123,467,89,第二个替换是在之前替换的基础上用6替换6,所以内容变成了123,456,789。

${name}置换原则。

只需对上面的正则表达式进行变换,并为第一个组分配一个组号,这样整个正则表达式就会如下所示:(?测试' d)(?=(d{3})(?d)),这是后期替换的原则,变成这样。详见下图,原理相同。

$ $匹配元素。

$ $匹配元素是在匹配的内容中插入一个“$”字符。其实我个人觉得两个$ $就跟音译字的意思一样。将元字符$更改为普通字符。下面的要求是我们匹配一串浮点数并将它们转换成货币。例如,货币金额的正则表达式为12.36、15.66和15.56,即([0-9。]).首先看下面匹配的内容,如下图所示:

匹配的三组内容要很好理解,以下替换内容如下:

$替换元素。

$的含义是整个正则表达式的匹配内容,也就是组0中的内容。上面的正表达式可以通过在前面加一个数字5来修改。正则表达式变成这样的5([0-9。]),所以原文前面也是一个5,不会有太大的变化。匹配结果如下:

通过替换可以获得以下结果:

$ `和$ '替换元素。

这两个替换元素基本相同,只是一个匹配前面的元素,另一个匹配后面的元素。在这里,我们将根据一个例子来解释,例如,一串字符包含数字和字母,此时,我们希望用汉字所在位置前面的内容来替换这些汉字。此时,有必要根据一个示例使用$ '来查看其用法:(如下图所示)($ '包括替换字符串中匹配项之前的输入字符串的所有文本。)

当我们打开替换模式时,它会根据整个表达式的匹配内容进行替换。在分析替换结果之前,让我们先看一下它们:

根据详细分析,在搜索模式时,会有三组匹配的内容,即1、2和3。首先,替换整个表达式匹配的内容,用原文1前面的所有元素替换1。此时,整个字符串变成aabbaabbccdd2eeff3。注意红色位置是替换位置,此时会进行下一轮替换。下一轮,2将被替换为原文。这里强调的是原文,而不是上次替换的内容。这时候我们来看原文2前面的内容为aabb1 cdd 2 eeff 3,是替换为aabbaabbccddaabb1ccddeeff3后的内容,红色位置是替换2后的内容。前面的内容是aabb1ccdd2eeff3。此时,更换3后,该文本为aabbaabbccddaabb1ccddd2eeff,更换完成。

好了,分析是这样的。其他原则也一样。等大家自己分析吧~ ~。通过以上分析,NET就不再担心我的正则表达式替换了~ ~ ~。

三.结束语。

以上分析如有错误,希望你能指出小丁再次感谢我。这里我想说的是,Msdn里面的信息还是很齐全的,所以Msdn是大家学习的首选。

更多资讯
游戏推荐
更多+