正则表达式之基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式之基础相关的知识,希望对你有一定的参考价值。

匹配组

正则表达式中用一对圆括号()表示一个匹配组,括号中的匹配内容则被看做是一个整体。

(regex)

表示匹配regex并获取到一个自动命名的组,自动命名的组是从下标1开始的,依次是1,2,3,4,5。。。

([A-Z])(-)(\\d{2,3})(-\\d{2,3}[A-Z])?

其中就有四个匹配组,并且自动命名为1,2,3,4

技术分享

(?<name>regex)

当然我们也可以用这种方式来为一个匹配组命名

(?<Group1>[A-Z])(?<Group2>-)(?<Group3>\\d{2,3})(?<Group4>-\\d{2,3}[A-Z])?

技术分享

非获取匹配组

以上两种匹配组都是获取匹配,匹配到后会将结果保存已被后续的使用。典型的用法就是后项引用:

<(h\\d)>.*?</\\1>

技术分享

关于非获取匹配我在上一篇 正则表达式之基础(三) 中已经介绍过,这里简单再总结一下,基本可以理解为,(?<=regex)以什么开头,(?<!regex)不以什么开头,(?=regex)以什么结尾,(?!regex)不以什么结尾

虽然这些都会包含一对圆括号,但匹配结果并不会被保存以备后用

技术分享

替换

有了上面匹配组的一些简单知识,我们就可以运用它来做一些简单的替换操作了。

P-53-189A

-》

P-73-189A

([A-Z])(-)(\\d{2,3})(-\\d{2,3}[A-Z])?

$1-73$4

(?<Group1>[A-Z])(?<Group2>-)(?<Group3>\\d{2,3})(?<Group4>-\\d{2,3}[A-Z])?

${Group1}-73${Group4}

技术分享

替换元素

替换 说明
$number 包括替换字符串中的由 number 标识的捕获组所匹配的最后一个子字符串,其中 number 是一个十进制值
${name} 包括替换字符串中由 (?<name> ) 指定的命名组所匹配的最后一个子字符串
$$ 包括替换字符串中的单个“$”文本
$& 包括替换字符串中整个匹配项的副本
$` 包括替换字符串中的匹配项前的输入字符串的所有文本
$’ 包括替换字符串中的匹配项后的输入字符串的所有文本
$+ 包括在替换字符串中捕获的最后一个组
$_ 包括替换字符串中的整个输入字符串

参考

实用正则表达式匹配和替换

正则表达式中的替代

以上是关于正则表达式之基础的主要内容,如果未能解决你的问题,请参考以下文章

shell编程之正则表达式基础正则表达式

刨根究底正则表达式之二——正则表达式基础

Linux学习8之Shell编程--基础正则表达式

JAVA基础之正则表达式

python之基础篇——正则表达式RE模块

Java基础学习笔记十三 常用API之正则表达式DateDateFormatCalendar