找回密码
 加入
搜索
查看: 9458|回复: 31

[AU3基础] 正则问题 麻烦懂正则的帮忙看看 用正则拆字符串,取;前面与;后面[已解决]

 火.. [复制链接]
发表于 2015-10-27 00:59:05 | 显示全部楼层 |阅读模式
本帖最后由 kk_lee69 于 2015-10-30 15:54 编辑

字符串  1,2,3;A,b,C
分别 拆成两个字符串 P.S 不使用数组返回…. 单纯拆字符串

语法一   只取 1,2,3   没有;分号时 也需要返回 1,2,3


语法二    只取 A,B,C   没有;分号时 需要返回空字符串

; 分號前後 不一定是英文或者數字
发表于 2015-10-27 10:52:46 | 显示全部楼层
帮顶,希望正则高手出现
发表于 2015-10-27 11:27:01 | 显示全部楼层
本帖最后由 afan 于 2015-10-27 11:34 编辑

语法一   只取 1,2,3   没有;分号时 需要返回全部

本来是很简单的问题,如果提问不加红字部分,以下字符串何解:
1,2,3A,b,C
发表于 2015-10-27 13:17:48 | 显示全部楼层
我表示没看明白楼主的意思。
 楼主| 发表于 2015-10-27 13:52:49 | 显示全部楼层
回复 3# afan

我測試出一個是 (.+);  這樣可以返回 前面 但是 萬一 沒分號的時候 就無符合的

所以 改成 (.+);|(.+)   可是這樣 會返回兩組 第一組 空白  第二組返回全部
 楼主| 发表于 2015-10-27 14:58:28 | 显示全部楼层
回复 3# afan

^(.+)[;]*$  測試使用這樣  卻 有個問題就是 ; 會跑出來@@
 楼主| 发表于 2015-10-27 23:39:05 | 显示全部楼层
如何让 下面的这个字符串 也是返回空白 ,但是又必须要符合 上面的两个返回的结果呢??  求解

$A="1,2,3;KKK"
MsgBox(0,"",StringRegExpReplace($A,"(.+);",""))

$A="1,2,3;"
MsgBox(0,"",StringRegExpReplace($A,"(.+);",""))

;如何让 下面的这个字符串 也是返回空白 ,但是又必须要符合 上面的两个返回的结果呢??  求解
$A="1,2,3"
MsgBox(0,"",StringRegExpReplace($A,"(.+);",""))
发表于 2015-10-28 07:47:00 | 显示全部楼层
StringRegExpReplace($A,"[\d+,;]","")
发表于 2015-10-28 07:55:22 | 显示全部楼层
或者按照楼主的思路
StringRegExpReplace($A,"(.*)[;\d+]","")
 楼主| 发表于 2015-10-28 09:13:29 | 显示全部楼层
回复 8# haijie1223

樓主 可以請問一下
[\d+,;]   這裡的 , 意義是甚麼 是用以區隔 \d 與 ;嗎??  還是 有其他的意義  []裡面一定要用,隔開嗎
发表于 2015-10-28 10:59:24 | 显示全部楼层
中括号里面的每个字符都是相互独立的,本来就不存在区隔符号,所以里面的逗号就是匹配逗号用的,其它符号也是匹配自己的元素用的。
 楼主| 发表于 2015-10-28 11:28:28 | 显示全部楼层
回复 11# haijie1223
    所以 [\d+,;]  是依據我的範例設計的 如果我只是要廣義的 取 ; 的前後  這個就不適合了對吧

譬如 字串變成   A,B,C;KKKK
发表于 2015-10-28 11:37:17 | 显示全部楼层
回复 12# kk_lee69


    这种情况用9楼的正则
 楼主| 发表于 2015-10-29 09:21:00 | 显示全部楼层
回复 13# haijie1223
了解!!  另外 可以請教一下嗎

(.+);  這樣寫 與 (.+)[;] 這樣寫 兩者 有什麼差異?? 在某些情況下 會有不同的結果嗎??
发表于 2015-10-29 10:52:36 | 显示全部楼层
回复 14# kk_lee69
$A="1,2,3;KKK"
MsgBox(0,"",StringRegExpReplace($A,"(.*)[;\d+]",""))

$A="1,2,3;"
MsgBox(0,"",StringRegExpReplace($A,"(.*)[;\d+]","")) 

;如何让 下面的这个字符串 也是返回空白 ,但是又必须要符合 上面的两个返回的结果呢??  求解
$A="1,2,3"
MsgBox(0,"",StringRegExpReplace($A,"(.*)[;\d+]",""))
我是针对你给的字符串写的正则,这个应该具体问题具体分析吧。
我加中括弧是为了框住 分号 和 数字,至于单个字符没必要框住吧,我是这么理解的。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 22:15 , Processed in 0.212050 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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