这是我今天早上遇到的情况。我有很多用 CMD 模式编写的 JavaScript 文件,如下所示:
define(function(require, exports) {
// code goes here
})
我有一个简单的 ruby 脚本来操作这些文件以获得如下结果:
define(['module-a', 'module-b'], function(reuqire, exports) {
// code
})
我这样做的方法是打开这些文件,读取它们的内容,看看它们是否匹配/^define\(function/
,如果匹配则替换它们:
code = File.open('foo.js').read
if code =~ /^define\(function/
# do some work
end
奇怪的是,代码不会匹配那个正则表达式。第 2 行返回nil
。这将起作用:
code = "define(function(require, exports) {\n"
code =~ /^define\(function/ # ==> 0
nil
如果使用 读取代码,它只会返回IO#read
。但是,字符串的开头有效:
code = File.open('foo.js').read
code =~ /.define\(function/m # ==> 0
code[0] # ==> "" returns an empty string
但是不是^
匹配所有行的开头吗?