难道是 "@[^:]*:",这个能匹配@xxxx:,用@和:包围的能匹配上。 正则我用的很废物的。

解决方案 »

  1.   

    试试
    @[^:@]*(?=([^\u4e00-\u9fa5\w])|_)
      

  2.   

    foreach(Match m in Regex.Match(yourstr,"@[^@]+?(?=[\\s::(),.。])"))
    {
      //m.Value就是 你所要的
    }
      

  3.   

    @Geopornography
    上面的正则表达式都识别不了这个
      

  4.   

    试试这样
    @[^:@]*(?=([^\u4e00-\u9fa5\d])|_)
      

  5.   


    你这个也试过了,你的一用就把我整个string都替换了
      

  6.   

    这样呢?
    (?is)(.*?)@[^:@]*(?=([^\u4e00-\u9fa5\d])*|_)
    用$1替换
    Regex.Replace(input,"$1")
      

  7.   

    @Geopornography都会发光好玩儿阿萨德下,代表
      

  8.   

    你不是说以标点符号结束嘛?@Geopornography都会发光好玩儿阿萨德下代表
    逗号就结束了啊
      

  9.   

    你给的数据
    @Geopornography都会发光好玩儿阿萨德下,代表
    可以匹配到
    @Geopornography都会发光好玩儿阿萨德下
      

  10.   

    试试这个
    @[^@\r\t\n]*(?=[\s::,,.。])
      

  11.   

    不用这么复杂,这样就可以
    @"(?i)@[\u4e00-\u9fa5a-z0-9_-]{4,30}(?=\b)"
    新浪微博的昵称是4-30个字符支持中英文,数字,“_”和减号
      

  12.   

    问一下楼主你既然在做这个匹配那么我想问一下就是你@的列表如何像sina那样定位呢
    给你看网址看看现在就卡在定位了
    http://menexpert.lorealparis.com.cn/App/
      

  13.   

    就是像sina一样当我识别到@符号之后然后后面的第一个字符匹配出来的列表悬浮窗口的位置,也就是如果能获取到光标的坐标就好了,具体你可以试试sina的@然后看一下的他的那个定位,不知道这个定位有什么办法
      

  14.   

    忘了说了LZ何必弄那么复杂,sinaAPI里面不是有一个@联想搜索的方法么search/suggestions/at_users @联想搜索
      

  15.   


    他那是搜索@用户的相应信息吧  我只是要把微博用的@用户替换成相应链接而已刚刚头盔了下新浪微博的验证,发现如下代码,但是试了下他的正则表达式貌似不对
    [code=JScript][
    if(!/^[0-9a-z_][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}\.){1,4}[a-z]{2,4}$/.test(l)){return false}
    /code]
      

  16.   


    if(!/^[0-9a-z_][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}\.){1,4}[a-z]{2,4}$/.test(l)){return false}
    刚弄错了
      

  17.   

    Pattern.compile(String.format("@[[^@\\s%s]0-9]{1,20}", "`~!@#\\$%\\^&*()=+\\[\\]{}\\|/\\?<>,\\.:\\u00D7\\u00B7\\u2014-\\u2026\\u3001-\\u3011\\uFE30-\\uFFE5"))这个好使,反编译出来的。另外有没有人知道类似新浪微博的话题模式的匹配啊,例如:123456#黄岩岛是我们的#123456#钓鱼岛是我们的#123456#南沙群岛是我们的#123456. 其中只匹配"#.....#"  而这个匹配字段之间的或之外的都不匹配
      

  18.   

    输入邮箱会匹配出错的,另外,如果多个用户不使用空格分开,直接连在一起@,例:@a@b@c这样子微博也能匹配出用户,但如果自己写正则就很难匹配出了,而且,@微盘[email protected]@Druapl社区,也能匹配出'@微盘'和'@Druapl社区',而中间的邮箱地址不会匹配到。所以,看似简单的@功能,实际上很复杂的。