正则表达式,用于查找字符串的开始和结束索引

时间:2016-12-12 01:08:22

标签: regex matlab

假设您有一个输入字符串

text = '8.*x.^21+x';

我正在尝试使用

提取x变量上的幂的起始和结束索引
pattern = '(?<=\.\^)\d*|x';
[start,m_end]=regexp(text,pattern,'start','end')

start和m_end分别给出[4 7 10]和[4 8 10]的值,但这会导致错误,因为start和m_end的值应仅为[7 10]和[8 10]。登记/> 我的正则表达式是抓住第一个具有力量和力量的x,但它不应该。关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:2)

您拥有的模式可以替换任何“x”字符:|x。如果你只想要'x'后跟一个取幂,你可以添加一个负前瞻断言:

((?<=x\.\^)\d+)|(x(?!\.\^)) 

另请注意*字符类说明符从+\d量词的更改。这可能是必需的,否则它将匹配一个空字符串。