7

テキストからURLを削除するにはどうすればよいですか?」では、次のコードが提案されています。

require 'uri'
#...
schemes_regex = /^(?:#{ URI.scheme_list.keys.join('|') })/i
#...

私はこれを次のように改善しようとしました:

schemes_regex = Regexp.union(URI.scheme_list.keys)

IGNORECASEしかし、オプション( )をどのように指定すべきかわかりませんi

4

3 に答える 3

4

私は、Regexp.unionそのようにオプションの引数を渡すことは可能ではないと思います。もちろん、ユニオン操作の後にそれらを指定することもできます。

require 'uri'

Regexp.new(Regexp.union(URI.scheme_list.keys).source, Regexp::IGNORECASE)
# => /FTP|HTTP|HTTPS|LDAP|LDAPS|MAILTO/i
于 2012-10-02T19:11:33.800 に答える
3
schemes_regex = Regexp.union(
  *URI.scheme_list.keys
  .map{|s| Regexp.new(s, Regexp::IGNORECASE)}
)
于 2012-10-02T19:13:57.143 に答える
2

sawaの応答と同じですが、文字列の先頭にあるスキームを探しています。

Regexp.union(*URI.scheme_list.keys.map {|s| /\A#{s}/i })

こちらのライブデモをご覧ください

于 2012-10-02T19:24:39.630 に答える