做一个语法高亮脚本,发现 JavaScript 的正则表达式不支持 ?<= 预查,那么如何匹配 Python 函数定义 def func_name(a, b, c, *args, **kwargs): 中间的 func_name 呢?希望只匹配 func_name ,不能把 def 也匹配了。没有预查,真的挺难办
1
iyaozhen 2015-12-06 00:00:17 +08:00
js 应该支持分组匹配吧。 def (.*)\(.*\)
|
2
Septembers 2015-12-06 00:05:24 +08:00 via Android
|
3
sincway OP @iyaozhen
目的是扩展 SyntaxHighlighter 插件的 Python 支持,参数只能填写一句正则表达式,而且 func_name 后面的 ( ) 部分被拆分到下一个字符串了,提取不到,所以不能用 JS 支持的后向预查 ?=,分组也不太方便,和其他匹配不统一。 感觉 ?<= 是最方便的,然而 JS 怎么就不支持呢... 不想把 def func_name 一起给高亮了,原作者没做这个识别看来是有原因的。 |
5
sincway OP @Septembers 嗯,谢谢,看起来很不错,尝试整合中... 又要多引入一个 JS 文件了。 GitHub Gist 用后端直接处理代码高亮而不是前端看来也是一个方法。
|