开发者社区> 问答> 正文

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

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+就不能搜索出来呢?

展开
收起
爱吃鱼的程序员 2020-05-29 20:39:46 622 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    \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


    ######谢谢啦^_^
    2020-05-29 20:39:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载