我需要找到所有用户提到的评论。这意味着我需要找到正则表达式1)
的所有匹配项,其中@
后面只有一个点和下划线。你知道吗
这里有一个regex,可以用来查找所有可能的提及:
1)\B(@[a-z_.]{3,24})
我想确保@
之后的符号是有效的用户名(不需要检查数据库中是否存在用户)
我正在使用此正则表达式验证用户名:
2)'^(?!(.*?\_){2})(?!(.*?\.){2})[a-z0-9\._]{3,24}$'
它检查用户名是否由3-24个符号组成,是否包含0-1个点和下划线。
用户名regex将不适用于整个文本,因为negative lookahead
我尝试将regex 1)
和2)
结合起来,但效果不好。你知道吗
也可以使用regex 1)
,对于每个匹配使用regex 2)
。我不喜欢它,因为它会工作很慢,对长的评论。。。你知道吗
更新: 例如,我有一个评论
'text @valid_username text @unvalid_username_ text @valid.username text @unvalid..username'
我只需要提到用户名由3-24个符号组成,并且不包含超过一个点和下划线
你可以考虑一个足够好的模式,比如
参见regex demo。该模式的唯一缺点是,如果有效的提及可以以
.
结尾,那么它将与.
匹配(参见demo)。你知道吗细节
\B@
-a@
前面没有字符(?!(?:[a-z0-9.]*_){2})
-在@
之后没有两个_
字符(?!(?:[a-z0-9_]*\.){2})
-在@
之后没有两个.
字符[._a-z0-9]{3,24}
-三到二十四个字母、数字、.
和_
\b
-单词边界注意:您实际上可以使用some Python code来过滤通过
\B(@[a-z_.]{3,24})
获得的结果:相关问题 更多 >
编程相关推荐