机架代码:
(:: (:seq(:or(:* "_")(:+ upper-case)(:+ lower-case)) (:* "_")(:* upper-case)(:* lower-case)(:* digit))) (token-SYM lexeme)
此正则表达式似乎不适用于以下测试用例:
_ASFFDsfafg_03043435 or adfdSFISDFIOON_asfDFOIN3055
它似乎不能与下划线一起正常工作,似乎认为只要有下划线即是新令牌的开始。 我的程序是扫描每个字符的词法分析器,正则表达式用于定义SYM令牌(即符号令牌)的行为。
答案 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。
我看到您可能正在寻求解析器库的支持;我不确定在这种情况下球拍正则表达式的状态是什么。