如何在Ruby中捕获#定义?
我正在尝试用Ruby创建一个快速的语言解析器。整个过程都正常,我可以用我的新语言成功地运行代码,但我无法让#define正常工作。我想将#define作为用我的临时语言创建函数的关键字 到目前为止,我已经使用正则表达式来标记我的代码,并从中解析代码,转换为JavaScript,然后将其导入节点 我尝试的正则表达式是如何在Ruby中捕获#定义?,ruby,regex,parsing,Ruby,Regex,Parsing,我正在尝试用Ruby创建一个快速的语言解析器。整个过程都正常,我可以用我的新语言成功地运行代码,但我无法让#define正常工作。我想将#define作为用我的临时语言创建函数的关键字 到目前为止,我已经使用正则表达式来标记我的代码,并从中解析代码,转换为JavaScript,然后将其导入节点 我尝试的正则表达式是/\b\\define\b/ 你知道为什么这样不行吗 注:这是为了我自己的娱乐,我不想做一个高效的解析器。通过添加\A而不是\b来修复,并添加了捕获组以满足我的需要 您应该删除模式开头
/\b\\define\b/
你知道为什么这样不行吗
注:这是为了我自己的娱乐,我不想做一个高效的解析器。通过添加\A而不是\b来修复,并添加了捕获组以满足我的需要 您应该删除模式开头的
\b
:
#define\b
或者将\b
替换为\b
:
\B#define\b
当
前面有单词字符时,原始正则表达式将匹配#define
:
单词边界基本上是一个单词字符,后跟一个非单词字符,反之亦然,不是吗
我认为如果在
之前有单词字符,您要做的是不匹配\define
,因此我建议使用\B
或者,如果要在行首匹配
#define
,请使用^
并启用多行选项。尝试删除第一个单词边界?@Sweeper是的,这似乎确实有效。添加了\a和捕获组以满足我的需要。
some word#define