Regex 我不知道';我不知道如何将查询更改为与所有名称都不匹配

Regex 我不知道';我不知道如何将查询更改为与所有名称都不匹配,regex,Regex,我想编写一个正则表达式,以过滤franklusero06,并显示以下其余名称: franklusero06 usprodusero1 usprodusero2 ukusero2 这是我的正则表达式: ([A-Za-z]{2,3}(produsero|usero)+[0-9]{1,3}) 在这里您可以找到以下代码: 此代码的问题是要匹配所有名称,但这不是我想要的,我只想匹配最后3个名称。只需在正则表达式中添加一个单词边界: \b([A-Za-z]{2,3}(produsero|usero)+[

我想编写一个正则表达式,以过滤
franklusero06
,并显示以下其余名称:

franklusero06
usprodusero1
usprodusero2
ukusero2
这是我的正则表达式:

([A-Za-z]{2,3}(produsero|usero)+[0-9]{1,3})
在这里您可以找到以下代码:


此代码的问题是要匹配所有名称,但这不是我想要的,我只想匹配最后3个名称。

只需在正则表达式中添加一个单词边界:

\b([A-Za-z]{2,3}(produsero|usero)+[0-9]{1,3})\b

只需将单词边界添加到正则表达式:

\b([A-Za-z]{2,3}(produsero|usero)+[0-9]{1,3})\b

您可以进一步清理正则表达式:

\b([a-zA-Z]{2,3}(?:prod)?usero+\d{1,3})\b

这项工作只需稍微加快一点。

您可以进一步清理正则表达式:

\b([a-zA-Z]{2,3}(?:prod)?usero+\d{1,3})\b

这项工作做得快一点。

太好了。什么是边界?单词边界匹配单词和非单词字符之间的位置(或字符串的开头/开头)。我使用的是带有mysql的REXP
Sequel Pro
,似乎不支持
\b
。我可以使用“^和$”作为REGEXP的开头和结尾吗@乔治Nakeuri@MaryamPashmi,如果你搜索的字符串都在新行上,那么yesI没有得到你的确切意思是什么?!但如果我理解正确的话,我的文件就是日志,每行我都在寻找这个模式。完美。什么是边界?单词边界匹配单词和非单词字符之间的位置(或字符串的开头/开头)。我使用的是带有mysql的REXP
Sequel Pro
,似乎不支持
\b
。我可以使用“^和$”作为REGEXP的开头和结尾吗@乔治Nakeuri@MaryamPashmi,如果你搜索的字符串都在新行上,那么yesI没有得到你的确切意思是什么?!但是如果我理解正确的话,我的文件是log,我每一行都在寻找这个模式。你用
\b([a-zA-Z]{2,3}(prod)?usero+\d{1,3})\b
?:防止捕捉第二个组(prod)你用
\b([a-zA-Z]{2,3}(prod)?usero+\d{1,3})写的有什么区别\b
?:防止捕捉第二组(prod)