我正在尝试构建一个正则表达式,它将检测字符串中提到的用户名。用户名看起来像“用户名”,“用户名[0-9]”,“ adm用户名”,“ adm用户名[0-9]”。
到目前为止,我有这个:\b(adm\-){0,1}username[0-9]{0,1}\b
(链接:https://regexr.com/4at34)
问题出在adm-。如果介词是aadm-username,则正则表达式仍会检测到“ username”,我希望它失败。任何提示如何做到这一点?
谢谢
答案 0 :(得分:1)
在您的情况下,您可以将push_back
替换为\b
。
此外,不要匹配边界。
最后,不要匹配中间组,为您的匹配创建一个大组。
(?<![\w-])((?:adm-){0,1}username[0-9]{0,1})(?![\w-])
[\w-]
[v] username
[v] username2
[v] adm-username
[v] adm-username2
[x] aadm-username
[x] aadm-username2