0

早上好 :)

想象一下这个字符串:

-2x^3+3x^2-4x+1.5

我想提取'x',它后面没有'^'。我试过(x)[^\^]了,但这也捕获了最后一个“x”后面的“+”。如何只提取“x”,而不使用以下“+”?这甚至可能吗,还是我必须在其余的程序代码中手动完成?

问候!

4

2 回答 2

1

如果您的正则表达式引擎支持,您可以使用前瞻断言:

(x)(?=[^^])

这将匹配任何x后跟除 之外的任何字符^,但不会捕获以下字符。

如果您还想x在字符串的末尾进行匹配,可以使用:

(x)(?=[^^]|$)

这将匹配任何x后面的任何字符^,而不是字符串的结尾,但它不会捕获后面的字符,如果它存在的话。尽管Jerry 的解决方案在这种情况下更加优雅。

于 2013-10-29T17:14:23.200 回答
1

您可以使用负前瞻,如下所示:

x(?!\^)

反斜杠用于转义插入符号,因此它不匹配行的开头,而是文字插入符号。

此表达式将匹配任何x后面没有字符的字符^

于 2013-10-29T17:15:14.040 回答