找回密码
 加入

AUTOIT CN

搜索
查看: 201|回复: 6

[效率算法] 【求助】正则如何排除不想要的内容?【已解决】

[复制链接]
发表于 2018-3-12 10:12:59 | 显示全部楼层 |阅读模式
本帖最后由 网络书生 于 2018-3-12 11:33 编辑

okerStars Hand #2792278300014:
20:45:51 ET
Table '27922783'  button
Seat 1: 2456919248
Seat 2: 1835165825
Seat 3: 807556511
Seat 4: 2595026560
2456919248: posts
1835165825: posts
807556511: posts
2595026560: posts

如上文本我要把文本中数字部分大于等于八位的替换成前八位,后面的删除掉,红色部分的要保留不让替换,正则该怎么写?求大侠帮助,非常感谢!
发表于 2018-3-12 10:26:30 | 显示全部楼层
先把
okerStars Hand #2792278300014:
20:45:51 ET
Table '27922783'  button
这段替换为临时字符串
再替换数字部分
临时字符串替换回。

不要把问题搞复杂了,分步操作更易维护,正则不绕弯,执行速度还会更快。
 楼主| 发表于 2018-3-12 10:33:25 | 显示全部楼层
回复 2# afan

原来也想过这个办法,但是发现不好弄,主要是文本量很大,有多个文本,一个文本中有很多处okerStars Hand #2792278300014:这样的日志,我只是摘了一个,并且这个数字在不停增加变化
发表于 2018-3-12 10:51:01 | 显示全部楼层
回复 3# 网络书生


  1. ### 友情提示:本脚本由 Au3.REHelper 于 2018/03/12 10:50 自动生成,不保证其正确性,请自行测试 ###
  2. Local $sSource = _
  3.                 'okerStars Hand #279227830045745737014:' & @CRLF & _
  4.                 '20:45:51 ET' & @CRLF & _
  5.                 "Table '279227836565'  button" & @CRLF & _
  6.                 'Seat 1: 2456919248 ' & @CRLF & _
  7.                 'Seat 2: 1835165825' & @CRLF & _
  8.                 'Seat 3: 807556511 ' & @CRLF & _
  9.                 'Seat 4: 2595026560 ' & @CRLF & _
  10.                 '2456919248: posts ' & @CRLF & _
  11.                 '1835165825: posts ' & @CRLF & _
  12.                 '807556511: posts ' & @CRLF & _
  13.                 '2595026560: posts' & @CRLF & _
  14.                 'okerStars Hand #56862792278014:' & @CRLF & _
  15.                 '20:45:51 ET' & @CRLF & _
  16.                 "Table '642792278365'  button" & @CRLF & _
  17.                 'Seat 1: 572456919248 ' & @CRLF & _
  18.                 'Seat 2: 541835165825' & @CRLF & _
  19.                 'Seat 3: 43807556511 ' & @CRLF & _
  20.                 'Seat 4: 4562595026560 ' & @CRLF & _
  21.                 '2456919248: posts ' & @CRLF & _
  22.                 '1835165825: posts ' & @CRLF & _
  23.                 '807556511: posts ' & @CRLF & _
  24.                 '2595026560: posts'
  25. ;~MsgBox(0, '源字符串', $sSource)
  26. Local $sSRERe = StringRegExpReplace($sSource, '((?<=\s)\d{8})\d+', '\1')
  27. MsgBox(0, '替换结果', $sSRERe)
复制代码
发表于 2018-3-12 10:53:30 | 显示全部楼层
本帖最后由 hnfeng 于 2018-3-12 11:06 编辑

那就 修改一下正则表达式 排除 以 #' 开头的数字串
正则表达式昨天A大给你了,稍稍修改一下

匹配的是 (?<!['#\d])\d{8}
发表于 2018-3-12 11:14:42 | 显示全部楼层
A 大 的代码很好,赞一下
我也搞出来了
替换那行是这样:
  1. Local $sSRERe = StringRegExpReplace($sSource, "((?<!['#\d])\d{8})\d+", '\1')
复制代码
 楼主| 发表于 2018-3-12 11:27:57 | 显示全部楼层
本帖最后由 网络书生 于 2018-3-12 11:32 编辑

回复 4# afan  hnfeng

谢谢A大和hnfeng,问题终于解决了,还是正则不熟悉啊,多谢二位了,我开始也是想着 排除 以 # 或 ' 开头的数字串,但就是不知道怎么写,开始写成"[^#']\b\d{8,}"了,但是看结果替换后有些空格被替换了还有些数字没有被替换。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备15028933号-3 )谷歌 百度

GMT+8, 2018-6-21 09:07 , Processed in 0.090325 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表