Ruby 求一个正则表达式

ad583255925 · 2016年03月01日 · 最后由 ad583255925 回复于 2016年03月24日 · 3096 次阅读

"

xyz

" 我要把不在 src 属性里面的 xyz 给去了 也就是变成 "

"

求高手

这个不需要正则吧: "<p><img src='www.xyz.com'/>xyz</p>".gsub('>xyz<', '><')

#1 楼 @killernova "

xyz

xyzxyzxyz"那这样呢,就 src 里面的不要去

@ad583255925 ("<p><img src='www.xyz.com'/>xyz</p>xyzxyzxyz".match /<p>.+<\/p>/).to_s

@ad583255925 如果要去掉外面的‘xyz',得再 gsub 一下,感觉方法比较 low

html 还是用 xml parser 比较好,正则无尽坑。http://stackoverflow.com/a/1732454/1721198

或者简单点写成一个 helper,如果只是这个需求的话。

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 : '' }

#7 楼 @__main__ "

xyz 我需要的东西

" 这个又咋办呢

你要实现将 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/, '') }

#10 楼 @__main__ 对的,但是有图片或者链接的话就会把链接破坏掉

#10 楼 @__main__ 哥,我这边有一些内容用了这个正则之后得花好长时间才能出来,比如说这个

"

\r\n标段信息\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t<!-- \t \t \t -->\r\n\t\t\r\n\t\r\n
标段编号 标段名称采购方式 预算金额 (元)投标供应商名称排名评分
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t<!-- \t\t\t\t \t\t\t\t\t\t \t\t\t\t\t\t \t\t -->\r\n\t\t\r\n\t\r\n
1原长沙铬盐厂止水帷幕二期项目工程地质勘查竞争性谈判911093.93湖南核工业岩土工程勘察设计研究院,,1,2,3,,
\r\n\r\n\r\n\r\n\r\n\r\n\r\n

长沙市铬污染物治理有限公司原长沙铬盐厂铬污染土壤修复项目前期工程地下水污染防治加固工程(止水帷幕二期)工程地质勘察结果公告

\r\n\r\n

长沙市铬污染物治理有限公司的原长沙铬盐厂铬污染土壤修复项目前期工程地下水污染防治加固工程(止水帷幕二期)工程地质勘察竞争性谈判采购项目于束,现将成交结果公告如下。

\r\n\r\n

 

\r\n\r\n

一、项目名称

\r\n\r\n

 

\r\n\r\n

采购项目名称:长沙市铬污染物治理有限公司原长沙铬盐厂铬污染土壤修复项目前期工程地下水污染防治加固工程(止水帷幕二期)工程地质勘察

\r\n\r\n

预算金额 (元):911093.93

\r\n\r\n

二、项目编号

\r\n\r\n

 

\r\n\r\n

政府采购编号: CSCG-201601140001

\r\n\r\n

委托代理编号:HNZT-2016ZF017

\r\n<!--

招标公告日期:2016-01-18 12:22:03\" />

投标截止日期:2016-01-26 14:30:10\" />

开标日期: 2016-01-26 14:30:10\" readOnly/>

中标日期: 2016-01-31 19:31:52\" readOnly/>

-->\r\n\r\n

三、邀请供应商的情况、谈判情况、成交供应商名称、地址和成交金额

\r\n\r\n

(一)、邀请供应商的情况

\r\n\r\n

1、供应商产生方式:公告邀请

\r\n\r\n

2、采取采购人、评审专家推荐方式的推荐意见

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
采购人推荐意见评审专家推荐意见
供应商名称/供应商名称/
推荐意见/推荐意见/
\r\n\r\n

(二)、谈判情况

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
序号供应商名称最终报价评审结果
1湖南核工业岩土工程勘察设计研究院优惠率 42%(880724.12 元)第一名
2核工业长沙工程勘察院优惠率 41.5%(888316.57 元) 
3湖南中核建设工程公司优惠率 41%(895909.02 元) 
\r\n\r\n

(三)、成交供应商名称、地址和成交金额

\r\n\r\n

标段 1 中标,标段名称:原长沙铬盐厂止水帷幕二期项目工程地质勘查

\r\n\r\n

成交供应商名称:湖南核工业岩土工程勘察设计研究院

\r\n\r\n

地址:长沙市

\r\n\r\n

成交金额 (元):880724.12

\r\n\r\n

备注:无

\r\n\r\n

四、谈判小组成员名单

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
序号评审小组职务姓名产生方式参与过程备注
1主任评委钟共清随机抽取全过程 
2一般评委江西根随机抽取全过程 
3业主评委赵欢业主指定全过程 
\r\n\r\n

注:产生方式注明是随机抽取或自行选定;参与过程注明是确定供应商、谈判或全过程。

\r\n\r\n

五、公告期限:

\r\n\r\n

 

\r\n\r\n

六、参与采购活动的供应商认为成交结果使自己权益受到损害的,可以在知道或者应知其权益受到损害之日起 7 个工作日内以书面形式向采购人或采购代理机构提出质疑。

\r\n\r\n

七、采购人和采购代理机构名称、联系人和联系方式:

\r\n\r\n

 

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
采购人名称:长沙市铬污染物治理有限公司采购代理机构名称:湖南中投项目管理有限公司
电话:89711761电话:0731-82255989
地址:长沙市岳麓区银杉路 559 号岳银欣苑 6 栋 1404 室地址:长沙市雨花区万家丽中路一段 469 号华雅财富中心 906 室
联系人:谭晶联系人:罗芳
\r\n\r\n

 

\r\n\r\n

 

\r\n\r\n

 

\r\n\r\n\r\n

 

\r\n"

有什么优化的方案吗,我只要 src 后面的和 href 后面的不被替换可以吗

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

#13 楼 @__main__


= "$2" '>随便内容 这段是干嘛的?我没加这个,会不会是因为这个慢

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

#15 楼 @__main__ 兄弟啊,有啥优化的方法吗,这个正则替换这个正文实在是太慢了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号