假设您有一个输入字符串
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,但它不应该。关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
您拥有的模式可以替换任何“x”字符:|x
。如果你只想要'x'后跟一个取幂,你可以添加一个负前瞻断言:
((?<=x\.\^)\d+)|(x(?!\.\^))
另请注意*
字符类说明符从+
到\d
量词的更改。这可能是必需的,否则它将匹配一个空字符串。