【Golang】Perl 正则表达式语法的支持示例

背景

在 Golang 中,标准库的正则表达式包 regexp 是基于 RE2 语法的,并不直接支持 Perl 正则表达式的全部功能。虽然 Golang 的标准库并不直接提供对 Perl 正则表达式的支持,但是您可以使用第三方库来实现与 Perl 兼容的正则表达式功能。

一个常用的第三方库是 github.com/dlclark/regexp2,该库提供了对 Perl 正则表达式语法的支持。您可以使用它来实现与 Perl 兼容的正则表达式匹配。

以下是一个示例代码,演示如何使用 github.com/dlclark/regexp2 库实现对 Perl 正则表达式的支持。

示例

Go 复制代码
import (
	"github.com/dlclark/regexp2"
)

// MatchText 匹配文本 text:原始文本 reg:正则 key 名称
func MatchText(text, reg, key string) (bool, string) {
	re := regexp2.MustCompile(reg, 0)

	// 查找匹配项
	match, _ := re.FindStringMatch(text)
	if match != nil {
		capture := match.GroupByName(key)
		return true, capture.String()
	}
	return false, "未匹配"
}


func main() {
	text := `{"text":"中国银行 是一家很大的银行"}`
	reg := `"text":"(?<name>[\p{Han}]*银行)"`

    ok, resp := MatchText(text, reg, "name")

    log.info(resp)
}

推荐

发票识别: https://behappyto.blog.csdn.net/article/details/135557496?spm=1001.2014.3001.5502

内容管理系统:https://behappyto.blog.csdn.net/article/details/135529753?spm=1001.2014.3001.5502

sso统一授权平台:https://behappyto.blog.csdn.net/article/details/135531245?spm=1001.2014.3001.5502

相关推荐
phil624 分钟前
沙箱核心功能系列 06:编排调度与资源管理
后端
小兔子24 分钟前
if (system(cmd) != 0) 判不出命令失败:它返回的是等待状态,不是退出码
后端
艾迪的技术之路25 分钟前
16k 条慢查询,128 张分表,我这么解决
后端·github
dpharness25 分钟前
我踩过的四个记忆坑,从预算到换机
前端·后端
加宝的起点雷达26 分钟前
三个定时任务被删那天,系统一声不吭
人工智能·后端
泡海椒27 分钟前
jquick-pdf 热力图(HEATMAP)实战:24 格营收矩阵嵌入评级报告的模板逐行拆解
后端
对象存储与RustFS29 分钟前
Velero 接 RustFS 实操:K8s 集群备份落到自建对象存储
后端·docker·云原生
leo在掘金32 分钟前
2.8万亿MoE跑昇腾:0 Day适配改了啥
后端·架构
小兔子33 分钟前
proxy_pass 末尾写不写路径,是两套规则:上线后接口路径莫名多了一段
后端
IT枫斗者枫哥36 分钟前
用了BigDecimal还差一分?用四组Java代码查清原因
java·后端