正则表达式中的替代

替换是只能在替换模式中识别的语言元素。 它们使用正则表达式模式定义全部或部分用于替换输入字符串中的匹配文本的文本。

替换模式可以包含一个或多个替换以及本文字符


替换


说明


$ number


包括替换字符串中的由 number 标识的捕获组所匹配的最后一个子字符串。


${ name }


包括替换字符串中由 (?<name> ) 指定的命名组所匹配的最后一个子字符串。


$$


包括替换字符串中的单个“$”文本。


$&


包括替换字符串中整个匹配项的副本。


$`


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


$‘


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


$+


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


$_


包括替换字符串中的整个输入字符串。 有关详细信息。

$ number示例:

pattern: (a)(\d)(b);

replacement: $1     replacement: $2      replacement: $3

input:a1b           input:a1b            input:a1b

output:a          output:1            output:b

也就是将整个匹配结果替换成某个捕获组
${ name }示例:类似 $ number

pattern: (a)(?<group>\d)(b)

replacement: ${group}

input:a1b
output:1

也就是将整个匹配结果替换成某个命名捕获组
$$ 示例:

pattern: a\db

replacement: $$($$表示$,是替代中的转义字符)

input:a1b;
output:1

也就是将整个匹配结果替换成$
$&示例:
pattern: a\db

replacement: $&

input:a1b

output:a1b
也就是将整个匹配结果替换成本身

$`示例:($`说明 $` 替换将匹配的字符串替换为匹配项前面的整个输入字符串。     即,它将在删除匹配的文本时重复输入字符串,直至匹配。 匹配文本后    面的任何文本在结果字符串中保持不变。 如果输入字符串中有多个匹配    项,则替换文本将派生自原始输入字符串,而不是派生自文本已由早期    匹配项替换的字符串。(该示例提供了说明。)如果没有匹配项,则 $`     替换将不起作用。 )

pattern: \d+

replacement: $`

input:aa1bb2cc3dd4ee5

output:aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee 

在此示例中,输入字符串 "aa1bb2cc3dd4ee5" 包含五个匹配项。

下表说明了 $` 替换如何使正则表达式引擎替换输入字符串中的每个匹配项。

插入文本在结果列中以红色字体显示。


Match


Position


匹配项前的字符串


结果字符串


1


2


aa


aaaabb2cc3dd4ee5


2


5


aa1bb


aaaabbaa1bbcc3dd4ee5


3


8


aa1bb2cc


aaaabbaa1bbccaa1bb2ccdd4ee5


4


11


aa1bb2cc3dd


aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddee5


5


14


aa1bb2cc3dd4ee


aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee




$‘示例:(类似$`,刚好和$`相反)

pattern: \d+

replacement: $‘

input: aa1bb2cc3dd4ee5

output:aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee 

在此示例中,输入字符串 "aa1bb2cc3dd4ee5" 包含五个匹配项。

下表说明了 $` 替换如何使正则表达式引擎替换输入字符串中的每个匹配项。

插入文本在结果列中以红色字体显示。


Match


Position


匹配项后的字符串


结果字符串


1


2


bb2cc3dd4ee5


aabb2cc3dd4ee5bb2cc3dd4ee5


2


5


cc3dd4ee5


aabb2cc3dd4ee5bbcc3dd4ee5cc3dd4ee5


3


8


dd4ee5


aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5dd4ee5


4


11


ee5


aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee5


5


14


为空


aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee



 
$+ 示例:

pattern: (a)(\d)(b)

replacement: $+

input:a1b

output:b

也就是将整个匹配结果替换成最后一个捕获组
$_$number示例:

pattern: \d

replacement: $_

input:a1b

output:aa1bb
也就是将整个匹配结果替换成整个输入字符串
时间: 2024-08-03 23:33:45

正则表达式中的替代的相关文章

正则表达式中pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别

正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串. 将匹配的子串替换或者从某个串中取出符合某个条件的子串,或者是在指定的文章中抓取特定的字符串等.Python处理正则表达式的模块是re模块,它是Python语言中拥有全部的正则表达式功能的模块.正则表达式由一些普通字符和一些元字符组成.普通字符包括大小写的字母.数字和打印符号,而元字符是具有特殊含义 正则表达式大致的匹配过程是: 拿正则表达式依次和字符串或者文本

python 正则表达式中反斜杠(\)的麻烦和陷阱

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

正则表达式中原子的5种类型

原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子.原子是由所有那些未显示指定为元字符的打印和非打印字符组成,所以在这里将其详细划分为五类进行介绍. ①普通字符作为原子 普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符.所有数字等.例如,a——z.A——Z.0——9. ’/5/’        –用于匹配字符串中是否有5这个字符出现 ’/php/’      –用于匹配字符串中是否有PHP字符串出现 ②一些特殊字符和元字符作为原子 任何一个符号都可以作为原

PHP中的替代语法(冒号、endif、endwhile、endfor)

我们经常在wordpress一类的博客程序的模板里面看到很多奇怪的PHP语法,比如: <?php  if( empty($_GET['a]) ): ?>     <font color = "red">空的</font>     <?php endif;?> 对于相当一部分PHP爱好者来说根本没见过,这些是什么东西呢?难道是那些博客开发者自己搞的的仿PHP得模板语言? 非也,其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控

python&#160;正则表达式中反斜杠(\)的麻烦和陷阱&#160;(转)

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

backreference Oracle正则表达式中的反向引用

这是Oracle对正则表达式的backreference的描述 从定义中可以看到,当匹配表达式中已()的形式将一个子串包含起来,后面就可以以\?的形式来引用.\1对应第一个(),\2对应第二个... 反向引用的引入使得正则表达式的匹配功能变得更加强大,介绍两个在oracle正则函数中的应用 regexp_like regexp_like('1211233','^([0-9])(\d)\1\1\2(\d)\3$') 上面这个例子中,匹配表达式里,\1表示第一个([0-9]),这个表达式要判断字符串

正则表达式中问号等特殊字符的转义

在.NET Framework 开发人员指南 的 字符转义 一节 有这样一段话.除 .$ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配.但是其中并未注明这些字符应该匹配为什么字符.为了方便自己以后查阅,也为了方便网友搜索我就写在这里了.[Sipo] 点的转义:.  ==> \\u002E 美元符号的转义:$  ==> \\u0024 乘方符号的转义:^  ==> \\u005E 左大括号的转义:{  ==> \\u007B 左方括号的转义:[  ==> \\

正则表达式中的符号含义

. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符\d 匹配数字\b 匹配单词的开始或结束^ 匹配字符串的开始$ 匹配字符串的结束[\u4e00-\u9fa5]{2,20} 匹配2-20个汉字* 重复零次或更多次+ 重复一次或更多次? 重复零次或一次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次\W 匹配任意不是字母,数字,下划线,汉字的字符\S 匹配任意不是空白符的字符\D 匹配任意非数字的字符\B 匹配不是单词开头或结束的位置[^x]

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决

1.express 框架中的app.use是什么作用? 手册上写着是: app.use([path], function)Use the given middleware function, with optional mount path, defaulting to "/". 就是引入一个所谓的中间件,其实就是用来再实际请求发生之前hack req和res对象来实现一些功能,比如果最简单的logger就是在res的end事件上添加监听写入一条日志记录,express使用connec