[已解决]求助正则问题
本帖最后由 kxing 于 2011-9-20 17:25 编辑目的是要捕获没有 [] 括起来的名字。
一个正则通用于 $s 和 $s2 两个字符串。
多谢帮忙!!!!!
$s="[*张三]与*李四说:xxx"
$s2="*李四与[*张三]说:yyy"
$exp1=stringregexp($s,"^\[.+?\]与([^\[\]]+)说\:|^([^\[\]]+)与\[.+?\]说\:",3)
if not @error then msgbox(0,'',$exp1)
$exp2=stringregexp($s2,"^\[.+?\]与([^\[\]]+)说\:|^([^\[\]]+)与\[.+?\]说\:",3)
if not @error then msgbox(0,'',$exp2)
本帖最后由 kxing 于 2011-9-20 15:01 编辑
ps!
名字前面的*不一定有。
说后面的:固定不变。
最好能绕过名字包含 “与” 这个关键词。
很麻烦,高手帮忙啦。。。。 本帖最后由 gzh888666 于 2011-9-20 16:19 编辑
#include <Array.au3>
Local $Str = _
'$s="[*张三]与*李四说:xxx"' & @CRLF & _
'$s2="*李四与[*张三]说:yyy"' & @CRLF & @CRLF
Local $Test = StringRegExp($str, '([\x{4e00}-\x{9fff}]+?)]', 3)
If Not @Error Then_ArrayDisplay($Test, UBound($Test))
#include <Array.au3>
Local $Str = _
'[*张三]与*李四a说:xxx' & @CRLF & _
'*李四b与[*张三]说:yyy' & @CRLF & _
'猪头三与[披头四]说:yyy' & @CRLF & _
'[披头四]与猪头三说:xxx'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '([^\[\]与\v]+)(?:与\[.+?\])?说', 3)
_ArrayDisplay($Test, UBound($Test)) 本帖最后由 gzh888666 于 2011-9-20 16:53 编辑
回复 4# afan
{:face (113):}没看清楚题目!另请教afan,\v的用法。帮助里是垂直的空白符。这里是排除掉换行吗? 谢谢楼上两位... 这样的话如果某名字出现 “与” 是否就不能匹配到了。 我也进来学习啦 回复afan
没看清楚题目!另请教afan,\v的用法。帮助里是垂直的空白符。这里是排除掉换行 ...
gzh888666 发表于 2011-9-20 16:37 http://www.autoitx.com/images/common/back.gif
是的~ 因为示例文本为多行,如果是单行则可以不要\v 这样的话如果某名字出现 “与” 是否就不能匹配到了。
kxing 发表于 2011-9-20 17:28 http://www.autoitx.com/images/common/back.gif#include <Array.au3>
Local $Str = _
'[*张三]与*李四a说:xxx' & @CRLF & _
'*李四b与[*张三]说:yyy' & @CRLF & _
'毛毛与与[郝婆说]说:yyy' & @CRLF & _
'[毛毛与]与郝婆说说:xxx'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '与?([^\[\]\v]+)(?:与\[.+?\])?说', 3)
_ArrayDisplay($Test, UBound($Test)) 回复 10# afan
高人就是高人,问题想得周到,膜拜大侠! 谢谢afan啦,膜拜!!!
页:
[1]