Проблема с шаблонами регулярных выражений для UNSIGNED_DOUBLE - PullRequest
0 голосов
/ 27 ноября 2018

У меня проблемы с компиляцией кода, который преобразует инфиксное выражение в постфиксное выражение.Я подозреваю, что следующие две строки кода вызывают у меня проблему:

public static final Pattern UNSIGNED_DOUBLE = Pattern.compile("\\b[\\+-]?[0-9]*[\\.]?[0-9]+([eE][\\+-]?[0-9]+)?\\b");

 public static final Pattern CHARACTER = Pattern.compile("\\S.*?");

Может кто-нибудь помочь мне исправить две строки кода, чтобы избежать раскрытия группы рядом с индексом 1?

Спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

Если у вас возникли проблемы с соответствием +/- в начале, используйте что-то вроде
this

(?<![-+.\da-zA-Z_])[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?\b

https://regex101.com/r/EJII3S/1

Где(?<![-+.\da-zA-Z_]) - это в основном граница слова
, которая подходит для возможных символов . + -

Объяснено

 (?<! [-+.\da-zA-Z_] )         # Word and symbol boundary
 [+-]?                         # Optional +/-
 (?:
      \d+                           # Starts with a digit
      (?: \. \d* )?
   |                              # or,
      \. \d+                        # Starts with a decimal point
 )
 (?: [eE] [+-]? \d+ )?         # Optional exponent
 \b                            # Just a word boundary
...