早上好 :)
想象一下这个字符串:
-2x^3+3x^2-4x+1.5
我想提取'x',它后面没有'^'。我试过(x)[^\^]
了,但这也捕获了最后一个“x”后面的“+”。如何只提取“x”,而不使用以下“+”?这甚至可能吗,还是我必须在其余的程序代码中手动完成?
问候!
早上好 :)
想象一下这个字符串:
-2x^3+3x^2-4x+1.5
我想提取'x',它后面没有'^'。我试过(x)[^\^]
了,但这也捕获了最后一个“x”后面的“+”。如何只提取“x”,而不使用以下“+”?这甚至可能吗,还是我必须在其余的程序代码中手动完成?
问候!
如果您的正则表达式引擎支持,您可以使用前瞻断言:
(x)(?=[^^])
这将匹配任何x
后跟除 之外的任何字符^
,但不会捕获以下字符。
如果您还想x
在字符串的末尾进行匹配,可以使用:
(x)(?=[^^]|$)
这将匹配任何x
后面的任何字符^
,而不是字符串的结尾,但它不会捕获后面的字符,如果它存在的话。尽管Jerry 的解决方案在这种情况下更加优雅。
您可以使用负前瞻,如下所示:
x(?!\^)
反斜杠用于转义插入符号,因此它不匹配行的开头,而是文字插入符号。
此表达式将匹配任何x
后面没有字符的字符^
。