python正则表达式中匹配字符@开头的单词,出错? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

python正则表达式中匹配字符@开头的单词,出错? 400 报错

爱吃鱼的程序员 2020-05-29 20:39:46 175

python正则表达式中匹配字符@开头的单词,出错? 400 报错

我要匹配以@开头的单词,在《python标准库》P39中的例子,但是我自己写了一个类似的表达式,结果出错。

#1 twitter = re.compile(r'\b@([\w\d_]+)', re.UNICODE | re.VERBOSE)
   #2 twitter = re.compile(r'(?<=@)([\w\d_]+)', re.UNICODE | re.VERBOSE)
    text = u'hello world @this world'
    match = twitter.search(text)
    if match:
        print text[match.start():match.end()]
    else:
        print 'no match'
其中#1是我写的代码,#2是书上的代码,可以正确搜索出 @this ,但是为什么简单的\b@\w+就不能搜索出来呢?

Python
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-05-29 20:39:47

    \b 匹配单词的开始或结束 \b@\w+ 是匹配,asdf@sdf 这样的字符串 他的要求是@的前面要有字符串才可以,前面不能是空格,我说也说得不是太明白,osc在线工具有个正则测试,多试两遍就明白了######回复 @伊藤熊吉 : 对哦,@不是单词字符。哦,谢谢了,刚才还在纠结呢。######回复 @雷朝建 : 注意 @符号不是单词字符######回复 @雷朝建 : “\b”表示所在位置的一侧为单词字符,另一侧为非单词字符、字符串的开始或结束位置 \b@ 就是匹配,@的左边为\w 右侧为字符结束的,放在后面就是 匹配@后面是\w 前面是开始和结束######貌似还是不太明白,因为我\bt\w+也可以匹配以t开头的单词,但是就不能匹配以@开头的单词。不过还是谢谢你,^_^######换种说法吧,\b@ 匹配 sss@ 是可以的   @\b 匹配 @sss 是可以的,但是换一下就不行了,这样说你明白了么...######

    text = u'hello world @this world'

    >>> c = r"(?<=@)(.+?)(?=\ )"

    >>> re.findall(c,text)

    [u'this']

    这个正则专找@后面跟>1个非空格字符的 字符串,比如说 this


    ######谢谢啦^_^
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程