2015-12-31 2 views
3

Я пытаюсь проверить, содержит ли строка что-то с e^x или e^(any #, including negative)x, но я не могу это понять. Вот то, что я пробовал:Regex для экспоненциальной функции (e^x)

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

Некоторые примеры, которые соответствуют бы:

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

Я ссылается this, но я до сих пор не могу понять это.

+1

'[+ | -] \ d * е \^[+ | -] \ d * x'? –

ответ

4

Unescaped ^ соответствует началу строки. Если вы используете его внутри шаблона регулярного выражения и не указываете многострочный флаг, шаблон всегда будет терпеть неудачу, так как начало строки не может появиться в середине.

Вам необходимо избегать ^ и с matches() вам не нужны якоря. Кроме того, вы можете просто использовать ? (один или ноль случаев) или * (ноль или более) кванторов:

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

Посмотреть regex demo

3

Проблема заключается в том, что символ^предназначен для начала строки и, следовательно, если вы хотите использовать, если только для символа в/перед ним.

2

-?\\d*\\.?\\d*e\\^-?\\d*\\.?\\d*x произведения для чисел с плавающей точкой, а также.

Это соответствует:

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

ваше требуется регулярное выражение будет выглядеть следующим образом основная проблема связана с регулярным выражением является^знак вы должны игнорировать^так как использование начала матча \^

е \^- \ d *?

и ваш код будет

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

Он должен работать для -?\\d*e\\^-?\\d*x

-? соответствует символу - буквально, Quantifier:?Между нулем и один раз

\ d * соответствует цифры [0-9] Квантор: * Между нулем и неограниченное количество раз

е соответствует символу е буквально (чувствительно к регистру)

\^совпадает с знак^буквально

-? соответствует символу - буквально, Quantifier:? Между нулем и один раз

\ d * соответствует цифры [0-9] Квантор: * Между нулем и неограниченное количество раз

Смежные вопросы