指数函数的正则表达式(e ^ x)

时间:2015-12-31 12:55:00

标签: java regex

我正在尝试检查字符串是否包含e^xe^(any #, including negative)x的内容,但我无法弄明白。这是我尝试过的:

if(str.matches("^(e^x)$") || str.matches("^(e^[-?0-9]x)$")){
    System.out.println("match");
}

一些匹配的例子是:

-3e^x
100e^-x
e^-2x

我引用了this,但我仍然无法弄明白。

6 个答案:

答案 0 :(得分:4)

未转义^匹配字符串的开头。如果在正则表达式模式中使用它并且不指定多行标志,则模式将始终失败,因为字符串的开头不能出现在它的中间。

你需要逃避^matches()你不需要锚点。此外,您可以使用?(一次或零次出现)或*(零次或多次出现)量词:

if(str.matches("-?[0-9]*e\\^-?[0-9]*x"))

请参阅regex demo

答案 1 :(得分:3)

问题是^符号用于字符串的开头,因此如果你只想用于它之前/之前的符号。

答案 2 :(得分:2)

-?\\d*\\.?\\d*e\\^-?\\d*\\.?\\d*x也适用于浮点数。

匹配:

  • e^x
  • -3e^x
  • 100e^-x
  • e^-2x
  • -0.1e^2x
  • -0.1e^0.2x

答案 3 :(得分:0)

您所需的正则表达式将是这样的 你的正则表达式是^符号的基本问题 你必须忽略^就像开始匹配使用\ ^

<强>电子\ ^ - ?\ d *

,您的代码将是

if(str.matches("e\^\-?\d*?") ){
            System.out.println("match");
}

答案 4 :(得分:0)

它适用于-?\\d*e\\^-?\\d*x

- ?匹配角色 - 字面意思,量词:?在零到一次之间

\ d *匹配数字[0-9]量词:*在零和无限时间之间

e匹配字符e(区分大小写)

\ ^匹配字符^字面

- ?匹配角色 - 字面意思,量词:?在零到一次之间

\ d *匹配数字[0-9]量词:*在零和无限时间之间

答案 5 :(得分:0)

-?\\d*\\.?\\d*e\\^-?\\d*\\.?\\d*x