callmekq 发表于 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,"")其中需要匹配的符号有:. ( )

我需要的结果就是,当,输入“(变”时,只会出来"一二三四&二三四五(变)&"
但是,"一二三四&二三四五(变)&"和"一二三四&三四五六七(红)&"都会出来

haijie1223 发表于 2016-8-16 16:25:11

看了好几遍,猜着楼主可能是这个意思。.+变.+

callmekq 发表于 2016-8-16 16:29:53

回复 2# haijie1223


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

要的只是这行
一二三四&二三四五(变)&
;-------------------

haijie1223 发表于 2016-8-16 18:04:49

回复 3# Mr丶KQ


    原谅我语文没学好,表示没看懂您想要做什么~

callmekq 发表于 2016-8-16 18:27:21

回复 4# haijie1223

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

比如:(变 (红

Alam 发表于 2016-8-16 19:50:49

匹配一些符号时,需要用 \进行"转义"
匹配 .   用\.
匹配 (   用\(
匹配 )   用\)

Alam 发表于 2016-8-16 19:52:19

".*\(变\).*"

callmekq 发表于 2016-8-16 20:58:02

回复 7# Alam

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

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

\+读取某个控件
例如,读取后的内容为B
那么\B则是正则表达式内置的
无法获得指定的信息

haijie1223 发表于 2016-8-16 23:14:59

回复haijie1223

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

比如:(变 (红
Mr丶KQ 发表于 2016-8-16 18:27 http://www.autoitx.com/images/common/back.gif


    匹配'(变' :\(变

haijie1223 发表于 2016-8-16 23:17:27

你说了这么多,我是越看越糊涂,表达问题有这么难吗?
源字符串:xxxxx
目标字符串:yyyyyy
求正则表达式:zzzzzz
如果这么写出来,估计大家就看懂了。

Alam 发表于 2016-8-17 06:44:03

\+读取某个控件
例如,读取后的内容为B
那么\B则是正则表达式内置的
无法获得指定的信息

\这符号在正则里很重要, 要匹配它,当然也得转义!
要匹配 \B当然就用 \\B

callmekq 发表于 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) & ".*\&.*"
可惜还是有缺陷

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

麻烦大大帮忙下.

haijie1223 发表于 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, '&<.*', ''))

callmekq 发表于 2016-8-17 20:55:42

回复 13# haijie1223

3Q 大大
先正则替换再正则匹配
完美解决了.

haijie1223 发表于 2016-8-17 23:32:43

回复 14# Mr丶KQ


    匹配和替换都可以,只用一种就可以了,我只是把两种方法都给你写上了。
页: [1]
查看完整版本: [已解决]符号加汉字的正则表达式问题.