gpt4 book ai didi

regex - 如何在 Matlab/Octave 中使用 regexp(正则表达式)来查找重叠匹配

转载 作者:行者123 更新时间:2023-12-04 08:59:00 25 4
gpt4 key购买 nike

假设我想使用 Matlab 或 Octave regexp函数来查找子字符串 'var' 在前面是 , 或 : 并且后面是 , 或 : (逗号或冒号)时出现的位置。例如,说

line = ':var,var:'
在这种情况下,我希望答案是 [2 6] ,因为 'var' 从位置 2 和 6 开始。
但是,如果我这样做
>> regexp(line, '[,:]var[,:]') + 1
ans = 2
我只得到第一个位置,2,但没有得到第二个位置,6。这是因为 Matlab 考虑了第一次出现的逗号部分,所以它被丢弃,不用于第二次。
我该如何制作 regexp考虑重叠匹配并返回 [2 6] ?

最佳答案

使用环视:

(?<=[,:])var(?=[,:])
proof
说明
                         EXPLANATION
--------------------------------------------------------------------------------
(?<= look behind to see if there is:
--------------------------------------------------------------------------------
[,:] any character of: ',', ':'
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
var 'var'
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
[,:] any character of: ',', ':'
--------------------------------------------------------------------------------
) end of look-ahead

关于regex - 如何在 Matlab/Octave 中使用 regexp(正则表达式)来查找重叠匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63650655/

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