如何抓住单词周围的空格而不抓住空格?

2024-09-26 22:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个字符串s = "Hello this is Helloworld #helloworld #hiworld #nihaoworld "这个想法是捕获所有的hashtag,但是hashtag需要有一个边界。e、 如果像"Hello this is helloworld#helloworld"这样的东西不能被捕获

我想生成以下结果["#helloworld","#hiworld","nihaoworld"] 我有以下python代码

import re
print re.findall('(?:^|\s+)(#[a-z]{1,})(?:\s+|$)', s)

我得到的结果是["#helloworld","#nihaoworld"],中间的单词丢失了


Tags: 字符串代码importrehelloisthishelloworld
1条回答
网友
1楼 · 发布于 2024-09-26 22:09:55

我不认为你真的需要一个正则表达式,你可以使用:

s.strip().split()

但是,如果您确实想使用正则表达式,可以只使用^{}

>>> import re
>>> s = " #helloworld #hiworld #nihaoworld "
>>> re.findall(r'(?:^|\s)(#\w+)', s)
['#helloworld', '#hiworld', '#nihaoworld']

解释

  • 非捕获群(?:^|\s)
    • 第一种选择^
      • ^断言字符串开头的位置
    • 第二种选择\s
      • \s匹配任何空格字符(等于[\r\n\t\f\v ]
  • 第一捕获组(#\w+)
    • #按字面意思匹配字符#(区分大小写)
    • \w+匹配任何单词字符(等于[a-zA-Z0-9_]
    • +量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要回馈(贪心)

相关问题 更多 >

    热门问题