tubaba 发表于 2016-4-19 16:53:30

求助 正则表达式 去除某个匹配字符串中间的某个字符(已解决)

本帖最后由 tubaba 于 2017-7-7 14:25 编辑

正则表达式 去除某个匹配字符串中间的某个字符
OK,举个例子来说:
a boy who was in my class at school
【a boy who was in my class at school】
假设我想要去掉【】里面的空格符,该如何表达.
即变成这样:
a boy who was in my class at school
【aboywhowasinmyclassatschool】
上句不变,下句去掉空格.


解决方法:
匹配2次.先找出所有【】内容,再替换空格

haijie1223 发表于 2016-4-19 17:39:05

分两步,先提取再替换。

tubaba 发表于 2016-4-19 18:04:42

回复 2# haijie1223


    只能这样子吗?如果我有几万个这样的匹配,要替换其中的某个字符,那不是要替换几万次.

stringregreplace的反向引用 $1,能支持处理后的$1吗?比如形如 stringreplace('$1','空格','')这种形式

hnfeng 发表于 2016-4-19 20:55:18

本帖最后由 hnfeng 于 2016-4-19 21:06 编辑

如果是我,这样:
1、StringRegExp 把 $t_text 里面的以“【” 开始 以“ 】”结束的字符串取到一个数组中 $a_AAA
2、数组内容去除重复,用 _ArrayUnique
3、使用 for $i=0 to ubound($a_AAA)-1循环,
   $t_tmp=StringReplace($a_AAA[$i], " ", "")-- 把空格删掉,
   然后使用 StringReplace 替换 $text 里面的内容$t_text=StringReplace($t_text, $a_AAA[$i], $t_tmp)

zch11230 发表于 2016-4-20 10:40:17

以前问过同样需求的问题,不过是匹配,不是替换。(?!.*【)[^ ]+(?=.*】)但是实际运用起来,匹配2次效率还高些。

afan 发表于 2016-4-20 12:20:52

以前问过同样需求的问题,不过是匹配,不是替换。但是实际运用起来,匹配2次效率还高些。
zch11230 发表于 2016-4-20 10:40 http://www.autoitx.com/images/common/back.gif


    一般确实如此,要顾前要顾后的,崩溃都有可能。

tubaba 发表于 2017-7-7 14:24:06

回复 5# zch11230


    懂了,匹配2次
页: [1]
查看完整版本: 求助 正则表达式 去除某个匹配字符串中间的某个字符(已解决)