gpt4 book ai didi

regex - 捕获匹配组的子字符串

转载 作者:行者123 更新时间:2023-12-01 22:43:40 24 4
gpt4 key购买 nike

斯卡纳里奥

我必须从组合字符串中获取子字符串。匹配条件:

  • 字符串以“section1:”开头

  • 捕获的字符串可能是空格分隔或破折号分隔的字母数字值列表

  • 如果捕获的字符串以特定后缀(“-xx”)结尾,则从捕获的字符串中排除该后缀。

示例

section1:ypsilon:第 1 部分匹配,抓取“ypsilon”

section1:ypsilon zeta:第 1 部分匹配,抓取“ypsilon zeta”

section1:ypsilon-zeta:第 1 部分匹配,抓取“ypsilon-zeta”

section1:ypsilon-xx:第 1 部分匹配,抓取“ypsilon”,排除“-xx”

section1:ypsilon zeta-xx:第 1 部分匹配,抓取“ypsilon zeta”,排除“-xx”

section1:ypsilon-zeta-xx:第 1 部分匹配,抓取“ypsilon-zeta”,排除“-xx”

section2:ypsilon:第 2 部分不匹配

目前的解决方案

^section1:([a-zA-Z0-9\- ]+)(\-xx)?$

这个想法是获取组 1,而组 2 是可选的。 Demo .

问题

不幸的是,后缀与 group1 定义匹配,因为它是带有破折号的字母字符串。所以捕获到的字符串不排除后缀。

有什么线索吗?

最佳答案

你已经很接近了,你面临的主要问题是运营商的贪婪。

n+ 将匹配尽可能多的 n,如果我们希望减少这个数量,我们必须在其后缀 ?

我最终得到这个正则表达式 Demo here

^section1:([a-zA-Z0-9\- ]+?)(|-xx)$

主要区别是 + 之后的 ? 使其非贪婪(或不情愿),我更喜欢使用空和欲望后缀之间的交替而不是组(|-xx) 与行尾之前的任何内容或 -xx 不匹配。

我认为两者之间没有争议,我认为只是品味问题。

关于regex - 捕获匹配组的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com