"hello".spli-6ren">
gpt4 book ai didi

regex - 空格和哈希 (#) 作为 coffeescript 正则表达式导致错误?

转载 作者:行者123 更新时间:2023-12-01 12:39:36 24 4
gpt4 key购买 nike

表达这个问题的最简单方法是在回复中用一个小例子:

coffee> "hello".split(/: #/) #this is fine
[ 'hello' ]
coffee> "hello".split(/\s#/) #all good here too
[ 'hello' ]
coffee> "hello".split(/ #/) #wtf??
[stdin]:1:20: error: missing )
"hello".split(/ #/)

为什么最后一个正则表达式不起作用?稍微玩一下,似乎任何匹配 ^ +.*#.*$ 的正则表达式都会出错 注意,这是正则表达式开头的空格。 (例如 /foo#bar/ 但不是 /foo bar#baz/)。

这是解析器中的错误吗?

(在 Arch Linux 上运行 CoffeeScript 1.7.1 版)

最佳答案

因为咖啡词法分析器试图弄清楚第一个 / 是除法运算符还是正则表达式的开始,并且在这种情况下猜错了。 Here是相关代码。我不确定这是否是错误。

如果你把它放在一个文件中:

"hallo".match / #/
1

并使用 coffee -p 您会看到它被解析为除法运算符。如果您在开头添加一个非捕获组,您将得到一个表达式(几乎,因为它确实占用更多空间和可忽略的正则表达式编译时间)等同于您的目标:

"hall #o".match /(?:) #/

编辑:

作为mu is to short已经指出,在空格前面放一个反斜杠可能会更容易。

"hall #o".match /\ #/

关于regex - 空格和哈希 (#) 作为 coffeescript 正则表达式导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com