gpt4 book ai didi

ruby - 排除某些单词的正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:20 24 4
gpt4 key购买 nike

我需要一个 正则表达式,它可以从一个单词中获取前 n 个字符,不包括 TheA

例如,这是我的示例数据集:

The firstMatch
A SecondMatch
the thirdMatch
a Fourthmatch

这是我试过的正则表达式:"^(.{3}).*$

获取每个输入字符串的前三个字符。但我真正想要的是每个输入字符串的前三个字符包括AThe

所以,对于上面的输入字符串,我想要的匹配项是:

'fir', 'Sec, 'thi', 'Fou'

知道如何做到这一点吗?

最佳答案

这取决于您使用的正则表达式引擎(最初问题没有标记 Ruby ,所以我将保留其他选项。)

选项 1:回顾(C#、PHP、Java)

(?im)(?<=^The |^a )\w{3}

参见 demo .

许多引擎支持lookbehind,但支持可变宽度lookbehind的引擎不多。

选项 2:\K (PHP、Perl、Ruby 2+)

(?im)^(?:The |a )\K\w{3}

参见 demo .

\K告诉引擎从它返回的最终匹配中删除到目前为止匹配的内容

选项 3:捕获组(JavaScript、Python 等)

(?im)^(?:The |a )(\w{3})

the demo , 查看右侧 Pane 中的第 1 组捕获。

括号捕获与第 1 组的匹配项。我们从第 1 组中检索它。

解释

  • (?i)打开不区分大小写行
  • (?m)打开多行模式,允许 ^$匹配每一行
  • ^ anchor 断言我们在字符串的开头
  • (?<=^The |^a )是一个 lookbehind,断言当前位置之前的内容是字符串的开头,The , 或字符串的开头然后是 a
  • (?:The |a )是具有 OR | 的非捕获组内部交替
  • (\w{3}) 中的括号夺取第 1 组的比赛。

引用

关于ruby - 排除某些单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621003/

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