我正在尝试用Python创建一个与hashtags匹配的正则表达式。我对标签的定义是:
#
开头的作品[ ,\.]
之外的所有字符所以在本文中
#This string cont#ains #four, and #only four #hashtags.
这里的哈希值是This
、four
、only
和{
我遇到的问题是行开头的可选检查。在
[ \.,]+
不会这样做,因为它与可选的开头不匹配。在[ \.,]?
不会这样做,因为它匹配太多。在用+
^{pr2}$举例说明?在
In []: re.findall('[ \.,]?#([^ \.,]+)', '#This string cont#ains #four, and #only four #hashtags.')
Out[]: ['This', 'ains', 'four', 'only', 'hashtags']
如何可选匹配行的开头?在
这似乎有效:
\B
:匹配空字符串,但仅当它不在单词的开头或结尾时。这意味着r'py\B'
匹配'python'
,'py3'
,'py2'
,但不是{'py.'
,或{\B
正好与\b
相反,因此也受LOCALE
和{\W
:如果没有指定LOCALE
和UNICODE
标志,则匹配任何非字母数字字符;这相当于集合[^a-zA-Z0-9_]
。对于LOCALE,它将匹配不在集合[0-9_]
中的任何字符,并且对于当前语言环境,它没有定义为字母数字。如果设置了UNICODE
,则这将匹配除[0-9_]
加上Unicode字符属性数据库中分类为非字母数字的字符之外的任何字符。在在你的正则表达式之前,你可以告诉你不想要什么。在
有了消极的眼神你就能做到
相关问题 更多 >
编程相关推荐