我正在使用正则表达式中的#hashtag解析器。我正在尝试使一个与Twitter的标签解析器相同,但是我在互联网上找不到一个相同的东西,所以我正在创建自己的一个。
这是给定输入上所需输出的示例。
#inktober -> Valid hashtag.
#inktober2019 -> Valid hashtag.
#2019 -> Not a valid hashtag.
我坚持要检测主题标签何时仅包含数字,而不应该将其检测为主题标签。
这是我正在处理此正则表达式的链接:
https://www.phpliveregex.com/p/tTB#tab-preg-match-all
我对正则表达式不太了解,如果这是一个愚蠢的问题,请您谅解。
我的语言是PHP。
谢谢! n.n
答案 0 :(得分:2)
我猜可能是
(?i)#[a-z][a-z0-9]*(?=\s|$)
可以正常工作。
$re = '/(?i)#[a-z][a-z0-9]*(?=\s|$)/m';
$str = '#inktober #inktober2019 #i #i1 #1 #2019
# inktober #@inktober2019 #@i #i1@ #1 #2019';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。
jex.im可视化正则表达式: