• Ruby 的 sexp 宏 at 2016年04月18日

    记得在 lisp 中 1 + 2 + 3 好像是可以写成:(+ 1 2 3)

  • 求一个正则表达式 at 2016年03月22日

    #14 楼 @ad583255925 那个是测试正则程序是否可以处理属性中的 大于或小于号,不能让正则在那个地方识别为 tag 结束。

  • 求一个正则表达式 at 2016年03月22日

    #12 楼 @ad583255925 你确定瓶颈在哪个正则上吗·?我在我的 macbook pro 机器上跑了下,哪个替换过程所花的时间非常少。

  • 求一个正则表达式 at 2016年03月03日

    你要实现将 HTML 中的特定文本替换掉?

    code =<<-EOF
      xyz<p><img src='www.xyz.com'/>xyz我需要的内容</p>xyz
      <div id="xyz" data-tag="xzy">xyz我需要的内容</div>
      <input type="text" readonly/>
      <br/><hr/>
      <div data-cont="$1 > $2"></div>
      <div data-cont=' "$1" >= "$2" '>随便内容</div>
    EOF
    
    reg = %r{
        ( </?                
            (?: 
                 [^<>"']*
               | ' (?: [^'\\] | \\.)* '
               | " (?: [^"\\] | \\.)* "
            )*?
          /?> 
        )
      | ( [^<>]* )
    }x
    
    puts code.gsub(reg) {|m| $1 ? $1 : $2.gsub(/xyz/, '') }
    
    
  • 求一个正则表达式 at 2016年03月03日
    code =<<-EOF
      xyz<p><img src='www.xyz.com'/>xyz</p>xyz
      <div id="xyz" data-tag="xzy">xyz</div>
      <input type="text" readonly/>
      <br/><hr/>
      <div data-cont="$1 > $2"></div>
      <div data-cont=' "$1" >= "$2" '></div>
    EOF
    
    reg = %r{
        ( </?       # tag start   
            (?:       # tag properties
                 [^<>"']*                    # 不含引号、> 、<的内容
               | ' (?: [^'\\] | \\.)* '    # 引号内的内容,可以包含> 、<
               | " (?: [^"\\] | \\.)* "
            )*?
          /?>       # tag end
        )
      | ( [^<>]* )
    }x
    
    puts code.gsub(reg) {|m| $1 ? $1 : '' }
    
    
  • 我一直这么写

    str =<<-EOF.gsub(/^[ ]{4}/, '')
        I know I know
        You will like it.    
            special in this case!
    
        or in this case 
    
            content!
    EOF
    
    puts str
    

    当然这种只能处理没有 tab 的情况,如果是 tab 和空格的混合情况就比较麻烦了。因为自己平时的编辑器会自动 将 Tab 换成空格所以用这个带处理问题不大

  • 对于服务器来说没有什么登陆不登陆的,只有 header 中是否含有合适的 cookie。抓包下能够正常的上传的程序的 http 包,把他的 header 复制下来就可以了

  • puts "1,2,3,4,5.exe".gsub(/,[^,]*$/, '')
    
  • How to convert RTF file to HTML? at 2013年12月25日

    多交代一些你具体的需要。这样大家才可以帮你想办法。你的 RTF 文件从哪来的?为什么要转化而不是直接生成 html 格式?还有就是你转化的频率有多高,是自己用还是公司用。如果是自己用的话可以考虑用一些在线的 web 服务来做

  • 好东西吗,也许用得着,先收藏下,中午研究下

  • 如何过滤 Unicode 控制字符 at 2013年11月19日

    你的正则用了排除法,这样写很容易出问题的,你应该只描述允许的字符

  • 正则替换求助 at 2013年11月07日

    不是正则的问题,是你读数据的时候没有正常编码

    s = IO.read(filename, :open_args => ['r:utf-8'])
    
  • 正则替换求助 at 2013年11月07日

    楼上的不够健壮,多一些空格就误判了,而且没必要使用反向环视

    r = %r{
      (\D) \s*             # 行末的最后一个非空白字符不能是数字
      (?= ^ \s* \D)      # 另一行第一个非空白字符不能是数字
    }x
    
    puts s.gsub(r, '\1 ')
    
  • 感觉还是 resutfull api 比较可行,用运行命令的方式来做感觉可靠性太差。

  • 求教楼层排序问题 at 2013年09月26日

    还是 1 楼的方法好,to_i 比正则高效的多,对 Ruby 内置的函数还不是很熟悉

  • 求教楼层排序问题 at 2013年09月26日

    上面那个太啰嗦了,应该可以简化下

    a = %w{ 1F B2 B1 B4 B3 2F 10F 11F 3F }
    
    a.sort! do |i1, i2|
      n1 = i1.sub(/[BF]/, {'F' => 0, 'B' => '-'}).to_i
      n2 = i2.sub(/[BF]/, {'F' => 0, 'B' => '-'}).to_i  
      n1 < n2 ? -1  : 1
    end
    
  • 求教楼层排序问题 at 2013年09月26日
    a = %w{ 1F B2 B1 B4 B3 2F 10F 11F 3F }
    
    a.sort! do |i1, i2|
      is_b1 = i1.start_with? 'B'
      is_b2 = i2.start_with? 'B'
      n1 = i1.sub(/[a-z]/i, '').to_i
      n2 = i2.sub(/[a-z]/i, '').to_i  
      case 
        when is_b1 != is_b2 then is_b1   ? -1  :  1 
        when is_b1 && is_b2 then n1 < n2 ?  1  : -1
        else n1 < n2 ? -1  : 1
      end
    end
    
    puts a
    
  • 利用 to_s 实现正则嵌套 at 2013年09月17日

    多谢@luikore的指点。查了下资料,ruby 的官方文档中确实有这样的描述: *Note: A regexp can't use named backreferences and numbered backreferences simultaneously. * 因此最后做的那个处理在使用命名组的时候确实有点没有必要了,不过在非命名捕获的情况下还是有必要的。至于?: 更多的是个人习惯。因为本身是做前端的,JS 中是不支持命名组的,所以习惯了尽可能少的减少捕获分组的个数