Lisp regexp匹配带或不带常量类型标识符的数字(3.2或3.2f)

题:

我想在emacs中创建一个数字字体锁面,​​但是我无法获得符合我需要的正则表达式.这是我有的:

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

我想要它匹配:

> 2
> 2.1
> 2.1f或2.1d
> .1f或.1d

我不希望它匹配

> 2.
> 2.f或2.d
> f或d

目前的问题:

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

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

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

(根据需要锚定它.)

转换为Emacs风格的正则表达式(Jon O):

"\\<\\([0-9]*\\.[0-9]+\\|[0-9]+\\)[df]?\\>"
点赞