您的位置:程序门 -> .net技术 -> c#



c#正则表达式的一个应用


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c#正则表达式的一个应用[已结贴,结贴人:lieyu063]
发表于:2007-02-21 02:19:06 楼主
有这个字符串:putlist( "abccd ");putlist( "defdg ");
我要抽取取其中的:abccd   和   defdg。
写了个正则表达式:regex.matches(s,   @ "^putlist(.*);$ ");
但上面的正则表达式匹配了整个串:putlist( "abccd ");putlist( "defdg ");
我只要匹配putlist( "abccd ");的,表达式该如何修改?
发表于:2007-02-21 08:22:281楼 得分:0
up,正则式常学常忘
发表于:2007-02-21 09:44:562楼 得分:0
由于正则表达式的匹配寻找追求的是最长匹配,能匹配到第一个 '; '的匹配几乎一定能匹配到第2个 '; ',所以恐怕比较难实现吧,期待高手解决~~~~
发表于:2007-02-21 10:58:213楼 得分:20
putlist(.?);   问号指定非贪婪模式
发表于:2007-02-21 11:06:054楼 得分:0
只好用group模式,然后取第一个。
发表于:2007-02-21 11:46:075楼 得分:0
(? <=putlist\( ")[^ "]+(?= "\))
发表于:2007-02-21 11:46:396楼 得分:0
用我这个试试。
发表于:2007-02-21 11:51:227楼 得分:0
(? <=putlist\(\ ")[^\ "]+(?=\ "\))
发表于:2007-02-21 12:08:308楼 得分:0
string   s   =   @ "putlist( " "abccd " ");   putlist( " "defdg " "); ";
matchcollection   vmatches   =   regex.matches(s,   @ "putlist\(([^\)]+)\)\; ");
foreach   (match   vmatch   in   vmatches)
        textbox1.appendtext(vmatch.result( "$1 ")   +   "\r\n ");
------
"abccd "
"defdg "
发表于:2007-02-21 17:14:219楼 得分:0
我的宝贝叫阿刺)
发表于:2007-02-21 20:14:1010楼 得分:0
楼上,这么巧?
发表于:2007-02-22 00:50:0511楼 得分:0
可以用反向正声明:(? <=)和正声明:(?=)
ls的正解
发表于:2007-02-22 14:17:2212楼 得分:0
h
   
*****************************************************************************
欢迎使用csdn论坛专用阅读器   :   csdn   reader(附全部源代码)  

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
发表于:2007-02-22 16:00:1113楼 得分:0
string   yourstr   =   ......;
matchcollection   mc   =   regex.matches(yourstr,   "putlist\\(\ "(.+?)\ "\\) ",   regexoptions.ignorecase);
foreach(match   m   in   mc)
{
        m.groups[1].value;//
}


快速检索

最新资讯
热门点击