cfs43210 发表于 2012-12-18 20:14:11

请问INI怎么用正则写入指定第几|后面,和读取|前|中间|后的内容。求谢了!(已解决)

本帖最后由 cfs43210 于 2012-12-18 22:49 编辑


001=大成|192.168.1.1|电话号码|中文字|宽带帐号|宽带密码

cfs43210 发表于 2012-12-18 21:19:45

本帖最后由 cfs43210 于 2012-12-18 21:53 编辑

$array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 3)

For $i = 0 To UBound($array) - 1
    MsgBox(0, "正则测试 标志值 3 - " & $i, $array[$i])
Next
这个读例子类似,但是搞来搞去高不定。
| 或(or). 可以匹配|前的字符也可以匹配|之后的字符. 这个帮助不知道是怎么用。有大侠告诉我吗?

user3000 发表于 2012-12-18 22:37:39

回复 2# cfs43210


    帮助的例子不适合你要处理的数据.
你读取了配置内容后,直接用StringSplit处理更好吧.
当然,用正则也能实现,但似乎也蛮'曲折'的.
#include<array.au3>
Local $str = '' & @CRLF & '001=大成|192.168.1.1|电话号码|中文字|宽带帐号|宽带密码'
Local $i = 5 ; 0 到 5 可选,依次显示对应位置文字
$r = StringRegExp($str, '001=(?:[^\|=]+\|){' & $i & '}([^\|]+)(?:\|?[^\|=]+\|?){' & (5- $i) & '}', 3)
_ArrayDisplay($r)

帮助里说的: | 或(or). 可以匹配|前的字符也可以匹配|之后的字符.
这不能用于1楼你要处理的数据, 完全不同一个概念.
正则里的 | 字符是个元字符,当你要处理这字符时, 不能直接引用, 必须在正则里用 \| 来引用, 比如上面例子.
下面举个or意思的例子:
#include<array.au3>
Local $str = '' & @CRLF & '001=大成|192.168.1.1|电话号码|中文字|宽带帐号|宽带密码'

$r = StringRegExp($str, '\d+|[[:alpha:]]+', 3) ; | 元字符使用, 捕获1个或(or)多个的字母或数字组合
_ArrayDisplay($r)

cfs43210 发表于 2012-12-18 22:48:32

回复 3# user3000
谢谢!用StringSplit解决了。。。

bsjd120 发表于 2012-12-25 14:56:27

非常需要哦 。。。谢谢了啊
页: [1]
查看完整版本: 请问INI怎么用正则写入指定第几|后面,和读取|前|中间|后的内容。求谢了!(已解决)