正则表达式

正则表达式

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式。

正则表达式是一种用于模式匹配和搜索文本的工具。

正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据。

正则表达式可以应用于各种编程语言和文本处理工具中,如 Golang、Python、Java、Perl 等。

匹配时的贪婪和非贪婪

例如:(abc)123245(def)
贪婪: 使用贪婪的方式可以将整个 (abc)123245(def) 进行匹配
非贪婪: 使用非贪婪的方式则只匹配 (abc)(def) 中的内容
实现方法:通过在 * 、+ 或 ? 限定符之后放置 ?,该表达式从 “贪婪” 表达式转换为 “非贪婪” 表达式或者最小匹配。

package main

import (
	"fmt"
	"regexp"
)

func main() {
	str := "(abc)123245(def)"
	//贪婪
	//cpl := regexp.MustCompile("[\\(].*[\\)]")
	//非贪婪
	cpl := regexp.MustCompile("[\\(].*?[\\)]")
	words := cpl.FindAllString(str, -1)
	fmt.Println(words)
}
// 输出: [(abc) (def)]

正则表达式先行断言(lookhead)后行断言(lookbehind)

先行断言: 匹配前面的字符。

//exp1(?=exp2) 匹配后面是exp2的exp1
/abc(?=[/d+])/
//exp1(?!exp2) 匹配后面不是exp2的exp1
/abc(?![/d])/

后行断言: 匹配后面的字符

//(?<=exp2)exp1 匹配前面是exp2的exp1
/(?<=[/d])abc/

//(?<!exp2)exp1 匹配前面不是exp2的exp1
/(?<![/d])abc/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值