草庐IT

regexp-safe

全部标签

Ruby Regexp 精确匹配字符串

我有一个Ruby正则表达式问题。ifstring==/(^\d{1,3})/#thismatchesboth"24"and"24gravidautaliquam"#code...end我希望正则表达式只匹配“24”。我应该怎么做才能只允许数字? 最佳答案 ifstring=~/(^\d{1,3}$)/#code...end顺便说一句,如果您只想匹配“24”(而不是“39”或“42”),您不需要正则表达式,您需要进行直接比较:ifstring=="24"#code...end 关于Ruby

python - Ruby 中是否有等同于 yaml.safe_load 的东西?

相当high-profilesecurityvulnerabilityinRails最近阐明了在Ruby应用程序中解析用户提供的YAML的潜在危险。快速谷歌搜索显示Python'sYAMLlibrary包括一个safe_load方法,它只会反序列化“简单的Python对象,如整数或列表”,而不是任何任意类型的对象。Ruby有对应的吗?有什么方法可以在Ruby应用程序中安全地接受YAML输入而无需手写自定义解析器? 最佳答案 正在关注Jim'sadvice我继续写了safe_yaml,一个gem,它添加了YAML.safe_load方

ruby - RegExp#match 只返回一个匹配项

请解释一下,为什么match()只返回一个匹配项,而不是四个(例如):s='aaaa'p/a/.match(s).to_a#=>["a"]奇怪的是,分组match()返回两个匹配,独立于实际匹配计数:s='aaaa'p/(a)/.match(s).to_a#=>["a","a"]s='aaaaa'p/(a)/.match(s).to_a#=>["a","a"]感谢您的回答。 最佳答案 需要使用.scan()进行多次匹配:ps.scan(/a/).to_a通过分组,整体匹配得到一个结果,每个组得到一个结果(使用.match()时。这两

ruby - 通过 ruby​​ : capturing user input safely 进行字符串编码

我四处寻找简单的解决方案。没有一个是简单的或“刚刚工作”的。首先,我不断收到此错误:ArgumentError:invalidbytesequenceinUS-ASCII发生这种情况是因为用户正在从MicrosoftWord中复制和粘贴内容。我只想要一种方法来清理用户输入,以便它以正确的格式存储在数据库中,无论他们发送给我的是什么格式。即使它完全破坏了他们的输入,我也不关心。我只是想强制将他们的输入编码成以后不会提示的东西。我试过:ic=Iconv.new('US-ASCII//IGNORE','US-ASCII')safe_string=ic.iconv(unsafe_string)

ruby 正则表达式 : difference between new and union with a single regexp

我简化了示例。假设我有一个包含正则表达式代码的字符串。我希望正则表达式匹配一个文字点,因此我希望它是:\.所以我创建了以下Ruby字符串:"\\."然而,当我将它与Regexp.union一起使用来创建我的正则表达式时,我得到了这个:irb(main):017:0>Regexp.union("\\.")=>/\\\./这将匹配一个斜杠后跟一个点,而不仅仅是一个点。将之前的结果与此进行比较:irb(main):018:0>Regexp.new("\\.")=>/\./它给出了我想要的正则表达式,但没有所需的联合。您能解释一下为什么Ruby会那样做以及如何正确地合并正则表达式吗?使用的上下

ruby - SSL 模式标志 - 证书验证 : is it safe to use :none?

我正在分别使用Savon和HTTPi、Rubysoap客户端和RubyHTTP客户端接口(interface)通过SSL编写soap请求。这是代码:client=Savon::Client.new(original_class.constantize.wsdl_url)client.http.auth.ssl.cert_key_file="path_to_the_key"client.http.auth.ssl.cert_key_password='secret'client.http.auth.ssl.cert_file="path_to_the_certification"clie

ruby - 如何使用 Regexp.union 指定 Regexp 选项

在“HowdoIremovingURLsfromtext?”中建议使用以下代码:require'uri'#...schemes_regex=/^(?:#{URI.scheme_list.keys.join('|')})/i#...我试图将其改进为:schemes_regex=Regexp.union(URI.scheme_list.keys)但我不知道如何指定IGNORECASE选项(i)。 最佳答案 我认为不可能像那样将选项参数传递给Regexp.union。您当然可以在合并操作之后指定它们:require'uri'Regexp.

ruby-on-rails - 为什么 YAML.safe_load 在 YAML 别名上失败?

我的Rails应用程序中有一个语言环境文件,它可以与Rails一起正常工作,但是当我尝试将它与react_on_railsrake任务(rakereact_on_rails:locale)一起使用时,我收到了这个错误:Psych::BadAlias:Unknownalias:item_attributes我发现rake任务基本上是调用YAML.safe_load,所以我准备了一个没有Rails的最简单的例子,但错误仍然存​​在。这是示例Ruby脚本:require'yaml'YAML.safe_load(File.open('test.yml'))这是test.yml文件(实际语言环境

Ruby Regexp : + vs *. 特殊行为?

使用ruby​​regexp我得到以下结果:>>'foobar'[/o+/]=>"oo">>'foobar'[/o*/]=>""但是:>>'foobar'[/fo+/]=>"foo">>'foobar'[/fo*/]=>"foo"文档说:*:前面的零次或多次重复+:前面的一个或多个重复所以我希望'foobar'[/o*/]返回与'foobar'[/o+/]相同的结果有人对此有解释吗 最佳答案 'foobar'[/o*/]匹配零o出现在f之前的s,在位置0'foobar'[/o+/]那里无法匹配,因为至少需要有1个o,所以它反而匹配所

c++ - 为什么 std::begin 和 std::end "not memory safe"?

在thisblogpost,EricNiebler指出:Whatiswrongwithstd::beginandstd::end?Surprise!theyarenotmemorysafe.Considerwhatthiscodedoes:externstd::vectorget_data();autoit=std::begin(get_data());inti=*it;//BOOMstd::beginhastwooverloadsforconstandnon-constlvalues.Troubleis,rvaluesbindtoconstlvaluereferences,leadi