【已解决】正则表达式相关问题
本帖最后由 35888894 于 2012-12-4 14:17 编辑求助,字符串“....asd>title=234<1223>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<....”
我想要用一个正则提取“编辑”后面所有的title=xxx,这个正则应该如何去写?谢谢 思路 ".*?" 是尽可能的少匹配 ".+" 是尽可能的多匹配,但是我想要不添加任何的主观因素,将 "编辑"后面的"title=xxx"全部提取出来是在想不通如何通过一个表达式实现 本帖最后由 qq362817567 于 2012-12-3 18:03 编辑
直接貌似很难实现,曲线就简单了。
#include <array.au3>
$source="....asd>title=234<1223>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<...."
$source=StringRegExpReplace($source,"[\s\S]+编辑","")
$source=StringRegExp($source,"title=[^<]+",3)
_ArrayDisplay($source) title=\w+这个把编辑前面的也匹配了! #include <Array.au3>
Local $str='“....asd>title=234<1223>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<....”'
Local $strin=StringInStr($str,"编辑")
Local $strmid=StringMid($str,$strin)
Local $strarray=StringRegExp($strmid,'title=\w+',3)
If Not @error Then _ArrayDisplay($strarray,'Debug~~~')可以这样实现
表达式
本帖最后由 lixiaolong 于 2012-12-3 20:48 编辑回复 1# 35888894
#include <Array.au3>
$Str = '....asd>title=234<1223>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<....'
Local $Test = StringRegExp($Str, '(title\=\w+)(?!.*编辑)', 3, 1)
_ArrayDisplay($Test, UBound($Test))
表达式开头加个 (?s) 支持多行.
\w+ 可以改成你需要的. 回复 6# lixiaolong
学习了!正则的贪婪性。 回复 6# lixiaolong
这个如果源字符串没有“编辑”字符也能匹配到,那就算出错了……
我只想到分段匹配的方法,一次性捕获倒没研究过 非一次正则搞定…#include <Array.au3>
Local $Str = '....asd>title=234<1223>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<....'
StringRegExp($Str, '编辑', 1) ;这里可以用StringInStr,考虑到通用性还是使用正则
If @error Then Exit
Local $aSR = StringRegExp($Str, '>([^<]*)', 3, @extended)
_ArrayDisplay($aSR, UBound($aSR)) 回复 6# lixiaolong
请教一下“(?!.*编辑)”的用法 (?!)是不等于 (?!.*编辑)的意思是不匹配前面为任意字符,截止“编辑”后面的数据进行捕获title=XXX 同理,我如果捕获“编辑”前面的title这个方法为什么就失效了呢(title\=[^<>]+)(?!编辑.*) 搞定了,原来是要这样。。(?=.*编辑)(title=\w+) 总结:匹配标识符前面的要用?= 匹配标识符后面的要用?! 总结:匹配标识符前面的要用?= 匹配标识符后面的要用?!
35888894 发表于 2012-12-4 14:08 http://www.autoitx.com/images/common/back.gif
不知道你到底要取到什么字符,一下要取编辑后面的所有匹配,一下又要取编辑前面的……
而且貌似你的总结也是错误的 ....asd>title=2324<1xhadj评审2d>title=23zzsd4<123>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<....
(?!.*评审)(?=.*编辑)(title=\w+)
匹配结果为:title=23zzsd4 ....asd>title=2324title=23zzsd4编辑title=123title=12a
35888894 发表于 2012-12-4 14:16 http://www.autoitx.com/images/common/back.gif
完全不是一楼的问题……评审.*?(title=[^<]+).*?编辑
页:
[1]
2