- 论坛徽章:
- 0
|
谢谢各位达达,但上面的shell,看不到用正则的地方呀,perl的脚本,用字典和数据库的的游标效率一样底吧。。下面是上csdn上问到的。
thy38
(孤独的长跑者)
等 级:
2
#6楼 得分:0回复于:2010-09-09 10:59:38
既然来脚本区问,我给你用IronPython写了个:
Python code
from System.Text.RegularExpressions import Regex, RegexOptions
s = r'''<Code>aaa</Code>
<Name>dsafs</Name>
<Code>aaa</Code>
<Name>sdafdc</Name>
<Code>aaa</Code>
<Name>sfdfserd</Name>
<Code>bbb</Code>
<Name>sfd sfsdf</Name>
<Code>bbb</Code>
<Name>eqwwer s</Name>
<Code>ccc</Code>
<Name> </Name>'''
reg = Regex(r"<code>(?<code>(?<!</code>).*)</code>\s+<name>(?<name>(?<!</name>).*)</name>",
RegexOptions.IgnoreCase);
result = {}
for x in reg.Matches(s):
key, value = x.Groups['code'].ToString(), x.Groups['name'].ToString()
try:
result[key].append(value)
except KeyError:
result[key] = [value]
for i in result:
str = '%s:%s' % (i, '/'.join(result[i]))
print str
对我有用[0]丢个板砖[0]引用举报管理TOP
budong0000
(budong)
等 级:
#7楼 得分:0回复于:2010-09-09 12:29:30
多谢几位达达,偶这就去测试。我猜想。net的正则和其它脚本的不一样,所以才有上面要求。其实相似就好。
对我有用[0]丢个板砖[0]引用举报管理TOP
budong0000
(budong)
等 级:
#8楼 得分:0回复于:2010-09-09 13:55:10
刚测试好了,可用,但这种用字典再foreach的做法和sql server里的游标效率一样。实在不想这样做。:《
现在想的思路是,匹配(?'code'<code>.*?</code>)如果前面没有(?<!\k'code'.*?)即可,但找出来的仍不正确,附
Perl code
(?<!\k'code'.*?)(?'code'<code>.*?</code>)
用的是Regex Tester测试 |
|