网络书生 发表于 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

如上文本我要把文本中数字部分大于等于八位的替换成前八位,后面的删除掉,红色部分的要保留不让替换,正则该怎么写?求大侠帮助,非常感谢!

afan 发表于 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:这样的日志,我只是摘了一个,并且这个数字在不停增加变化

afan 发表于 2018-3-12 10:51:01

回复 3# 网络书生


### 友情提示:本脚本由 Au3.REHelper 于 2018/03/12 10:50 自动生成,不保证其正确性,请自行测试 ###
Local $sSource = _
                'okerStars Hand #279227830045745737014:' & @CRLF & _
                '20:45:51 ET' & @CRLF & _
                "Table '279227836565'button" & @CRLF & _
                'Seat 1: 2456919248 ' & @CRLF & _
                'Seat 2: 1835165825' & @CRLF & _
                'Seat 3: 807556511 ' & @CRLF & _
                'Seat 4: 2595026560 ' & @CRLF & _
                '2456919248: posts ' & @CRLF & _
                '1835165825: posts ' & @CRLF & _
                '807556511: posts ' & @CRLF & _
                '2595026560: posts' & @CRLF & _
                'okerStars Hand #56862792278014:' & @CRLF & _
                '20:45:51 ET' & @CRLF & _
                "Table '642792278365'button" & @CRLF & _
                'Seat 1: 572456919248 ' & @CRLF & _
                'Seat 2: 541835165825' & @CRLF & _
                'Seat 3: 43807556511 ' & @CRLF & _
                'Seat 4: 4562595026560 ' & @CRLF & _
                '2456919248: posts ' & @CRLF & _
                '1835165825: posts ' & @CRLF & _
                '807556511: posts ' & @CRLF & _
                '2595026560: posts'
;~MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '((?<=\s)\d{8})\d+', '\1')
MsgBox(0, '替换结果', $sSRERe)

hnfeng 发表于 2018-3-12 10:53:30

本帖最后由 hnfeng 于 2018-3-12 11:06 编辑

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

匹配的是 (?<!['#\d])\d{8}

hnfeng 发表于 2018-3-12 11:14:42

A 大 的代码很好,赞一下
我也搞出来了
替换那行是这样:Local $sSRERe = StringRegExpReplace($sSource, "((?<!['#\d])\d{8})\d+", '\1')

网络书生 发表于 2018-3-12 11:27:57

本帖最后由 网络书生 于 2018-3-12 11:32 编辑

回复 4# afanhnfeng

谢谢A大和hnfeng,问题终于解决了,还是正则不熟悉啊,多谢二位了,我开始也是想着 排除 以 # 或 ' 开头的数字串,但就是不知道怎么写,开始写成"[^#']\b\d{8,}"了,但是看结果替换后有些空格被替换了还有些数字没有被替换。
页: [1]
查看完整版本: 【求助】正则如何排除不想要的内容?【已解决】