4

问题:我希望在 emacs 中创建一个数字字体锁定面孔,但我无法获得符合我需要的正则表达式。这是我所拥有的:

"\\<\\([0-9]*\\.?[0-9]*\\)+\\(d\\|f\\)?\\>"

我希望它匹配的内容:

  1. 2
  2. 2.1
  3. 2.1f 或 2.1d
  4. .1f 或 .1d

我不希望它匹配的内容

  1. 2.
  2. 2.f 或 2.d
  3. f 或 d

当前问题:

目前它主要工作,但它不匹配像 .2 或 .2f 这样的数字,因为它没有在数字之前拾取 (.)。它目前还匹配代码中任何位置的单个“f”或“d”,因此 f 或 d 等变量名得到匹配。我在这里想念什么?在过去一周左右的每个午休时间,我都在摆弄这个,我很难过。

4

1 回答 1

2

您可以使用这样的正则表达式(PCRE 语法):

(\d*\.\d+|\d+)[fd]?

(根据需要锚定它。)

翻译成 Emacs 风格的正则表达式(由Jon O提供):

"\\<\\([0-9]*\\.[0-9]+\\|[0-9]+\\)[df]?\\>"
于 2012-06-12T14:54:27.570 回答