Как я создаю regex в Emacs точно для 3 цифр?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

17
задан Luke Girvin 4 September 2011 в 00:59
поделиться

7 ответов

Если Вы вводите regex в интерактивном режиме и хотите использовать {3}, необходимо использовать обратные косые черты для выхода из фигурных скобок. Если Вы не хотите соответствовать какой-либо части более длинных строк чисел, используйте \b для соответствия границам слова вокруг чисел. Это уезжает:

\b[0-9]\{3\}\b

Для тех, которые желают больше информации [приблизительно 114], см. документы :

соответствия пустая строка, но только вначале или конец слова. Таким образом, \bfoo\b соответствия любое возникновение foo как отдельное слово. \bballs?\b соответствия ball или balls как отдельное слово. \b соответствия вначале или конец буфера независимо от того, какой текст появляется рядом с ним.

, Если Вы действительно хотите использовать этот regex от кода elisp, как всегда, необходимо выйти из обратных косых черт еще раз. Например:

(highlight-regexp "\\b[0-9]\\{3\\}\\b")
40
ответ дан 30 November 2019 в 10:43
поделиться

[0-9][0-9][0-9], [0-9]{3} или \d{3} не работают, потому что они также соответствуют "1234".

, Таким образом, это зависит от того, каков разделитель.

, Если это находится в переменной, тогда можно сделать ^/[0-9]{3}/$. Если это разграничено пробелом, Вы могли бы сделать \w+[0-9]{3}\w+

7
ответ дан 30 November 2019 в 10:43
поделиться

Необходимо использовать это:

"^\d{3}$"
2
ответ дан 30 November 2019 в 10:43
поделиться

Как другие указывают, необходимо соответствовать больше, чем просто эти три цифры. Перед цифрами у Вас должны быть или начало строки или что-то, что не является цифрой. Если emacs поддерживает \D, используйте его. Иначе используйте набор [^0-9].

Вкратце:

(^|\D)\d{3}(\D|$)
2
ответ дан 30 November 2019 в 10:43
поделиться

При экспериментировании с регулярными выражениями в Emacs я нахожу regex-инструмент довольно полезный:

ftp://ftp.newartisans.com/pub/emacs/regex-tool.el

Не ответ (на вопрос уже отвечают), просто общий совет.

1
ответ дан 30 November 2019 в 10:43
поделиться

[0-9] [0-9] [0-9] будет соответствовать минимум из 3 чисел, поэтому как упомянутый Joe, необходимо (как минимум) включать \b или что-либо еще, что разграничит числа. Вероятно, самый безошибочный метод:

[^0-9][0-9][0-9][0-9][^0-9]

0
ответ дан 30 November 2019 в 10:43
поделиться

Это довольно просто:

[0-9][0-9][0-9]
-2
ответ дан 30 November 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: