找回密码
 加入
搜索
查看: 2793|回复: 14

[AU3基础] [已解决]符号加汉字的正则表达式问题.

  [复制链接]
发表于 2016-8-16 16:12:23 | 显示全部楼层 |阅读模式
本帖最后由 Mr丶KQ 于 2016-8-17 20:56 编辑
#include <Array.au3>

$String = "一二三四&B.J&" & @CRLF & _
"一二三四&二三四五(变)&" & @CRLF & _
"一二三四&三四五六七(红)&"

$Test = StringRegExp($String,".*\&.*[(变].*\&",3)

_ArrayDisplay($Test,"")
其中需要匹配的符号有:. ( )


我需要的结果就是,当,输入“(变”时,只会出来"一二三四&二三四五(变)&"
但是,"一二三四&二三四五(变)&"和"一二三四&三四五六七(红)&"都会出来
发表于 2016-8-16 16:25:11 | 显示全部楼层
看了好几遍,猜着楼主可能是这个意思。
.+变.+
 楼主| 发表于 2016-8-16 16:29:53 | 显示全部楼层
回复 2# haijie1223


    符号这里[],匹配内容的.
比如[(]
获得:
一二三四&二三四五(变)&
一二三四&三四五六七(红)&
;-------------------
但是,[(变]
也是同样:
一二三四&二三四五(变)&
一二三四&三四五六七(红)&

要的只是这行
一二三四&二三四五(变)&
;-------------------
发表于 2016-8-16 18:04:49 | 显示全部楼层
回复 3# Mr丶KQ


    原谅我语文没学好,表示没看懂您想要做什么~
 楼主| 发表于 2016-8-16 18:27:21 | 显示全部楼层
回复 4# haijie1223

就是匹配指定的符号和汉字.

比如:(变 (红
发表于 2016-8-16 19:50:49 | 显示全部楼层
匹配一些符号时,需要用 \  进行"转义"
匹配 .   用  \.
匹配 (   用  \(
匹配 )   用  \)
发表于 2016-8-16 19:52:19 | 显示全部楼层
".*\(变\).*"
 楼主| 发表于 2016-8-16 20:58:02 | 显示全部楼层
回复 7# Alam

很谢谢你.
你这样我昨晚也试过了.
我通过读取某个Gui控件来实现搜索匹配的.

或许是我没表达清楚的缘故.
一大串的字符,其中这些字符包含中文、数字、字母、符号.
然而,我现在是实现了中文、数字、字母、字母+符号,见我发的代码.
符号+字母则是怎么都不行

\+读取某个控件
例如,读取后的内容为B
那么\B则是正则表达式内置的
无法获得指定的信息
发表于 2016-8-16 23:14:59 | 显示全部楼层
回复  haijie1223

就是匹配指定的符号和汉字.

比如:(变 (红
Mr丶KQ 发表于 2016-8-16 18:27



    匹配'(变' :
\(变
发表于 2016-8-16 23:17:27 | 显示全部楼层
你说了这么多,我是越看越糊涂,表达问题有这么难吗?
源字符串:xxxxx
目标字符串:yyyyyy
求正则表达式:zzzzzz

如果这么写出来,估计大家就看懂了。
发表于 2016-8-17 06:44:03 | 显示全部楼层
\+读取某个控件
例如,读取后的内容为B
那么\B则是正则表达式内置的
无法获得指定的信息


\  这符号在正则里很重要, 要匹配它,当然也得转义!
要匹配 \B  当然就用 \\B
 楼主| 发表于 2016-8-17 17:05:34 | 显示全部楼层
本帖最后由 Mr丶KQ 于 2016-8-17 17:08 编辑

回复 10# haijie1223

源字符串:
经典男&青春白&<Body>100000000.BP3</Body>
经典男&银灵之子(变)&<Body>1091328001.BP3</Body>
经典男&B.S淡季&<Body>104776003.bp3</Body>

目标字符串:
经典男&青春白
经典男&银灵之子(变)
经典男&B.S淡季

需要读取搜索框的内容再进行匹配
再三修改后的:"(?i).*" & GUICtrlRead($Search) & ".*\&.*"
可惜还是有缺陷

比如:
搜索(变或(变)
获得经典男&银灵之子(变)

麻烦大大帮忙下.
发表于 2016-8-17 17:36:45 | 显示全部楼层
回复 12# Mr丶KQ


#include <array.au3>
Local $string = _
                '源字符串:' & @CRLF & _
                '经典男&青春白&<Body>100000000.BP3</Body>' & @CRLF & _
                '经典男&银灵之子(变)&<Body>1091328001.BP3</Body>' & @CRLF & _
                '经典男&B.S淡季&<Body>104776003.bp3</Body>'
Local $aArray = StringRegExp($string, '(.*?)&<', 3)
_ArrayDisplay($aArray, '匹配')
MsgBox(0, '替换', StringRegExpReplace($string, '&<.*', ''))
 楼主| 发表于 2016-8-17 20:55:42 | 显示全部楼层
回复 13# haijie1223

3Q 大大
先正则替换再正则匹配
完美解决了.
发表于 2016-8-17 23:32:43 | 显示全部楼层
回复 14# Mr丶KQ


    匹配和替换都可以,只用一种就可以了,我只是把两种方法都给你写上了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-6 14:25 , Processed in 0.081205 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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