我需要一些有关在球拍/方案中重写正则表达式的指导。我正在尝试这样做r'[_A-Za-z] [_ A-Za-z0-9] *'

时间:2018-10-17 01:32:54

标签: regex scheme racket lexer

机架代码:

(:: (:seq(:or(:* "_")(:+ upper-case)(:+ lower-case)) (:* "_")(:* upper-case)(:* lower-case)(:* digit))) (token-SYM lexeme)

此正则表达式似乎不适用于以下测试用例:

_ASFFDsfafg_03043435  or  adfdSFISDFIOON_asfDFOIN3055

它似乎不能与下划线一起正常工作,似乎认为只要有下划线即是新令牌的开始。  我的程序是扫描每个字符的词法分析器,正则表达式用于定义SYM令牌(即符号令牌)的行为。

1 个答案:

答案 0 :(得分:0)

嗯...我想你可能只是在找

#px"[_A-Za-z][_A-Za-z0-9]*"

例如:

(regexp-match? #px"[_A-Za-z][_A-Za-z0-9]*" "_ASFFDsfafg_03043435")
(regexp-match? #px"[_A-Za-z][_A-Za-z0-9]*" "adfdSFISDFIOON_asfDFOIN3055")

...两者均评估为真。

通常,Racket支持完整的perl正则表达式AFAIK。

我看到您可能正在寻求解析器库的支持;我不确定在这种情况下球拍正则表达式的状态是什么。