仅当关键字不包含特定字符时正则表达式捕获字符串

regex capture string only if keyword does not contain specific character

我尝试创建一个正则表达式来捕获 netlogo 语言的一些关键字,以便为 highlight.js 创建一个文件。我不是正则表达式专家,但我尝试这样做,因为目前没有针对该语言的 Web 语法荧光笔。

我尝试了一个捕获所有 ([a-zA-Z0-9_\.?=\*!<>:#\+/%$\^\'&-]*) 的正则表达式,但实际上我只想捕获第一行(示例底部的第一行),并排除其中包含特殊字符的任何关键字。

random --> want to capture only this keyword
#random 
?random
random?
ran?dom
rand#om
random#

最终的正则表达式只需要捕获第一行 (random)。其他行是netlogo中授权的变量名,但不是关键字识别。

更新 1: 对于每个特殊的正则表达式命令,似乎高光需要将 /w 转换为 //w。

评论 (^|\s)(\w+)(?=\s|$) 中的整个命题不能直接在 hightlight.js 中起作用。我尝试 (^|\s)(\w+)(?=\s|$) 但在这种情况下选择了任何关键字:-/

部分 lexemes: '(\w+)(?=\s|$)' 有效,但仅捕获部分用例。例如,突出显示 random#

尝试:^(\s*)\w+(\s|$)

in java ,\ 可能应该写成 \

Regexbuddy-图片中的正则表达式: