我有这样的正则表达式(这要归功于你们这些人):
(?<=( |\\s|\\A|^))@(!)[\\w]{3,}+ ?[\\w]*
哪个很好但是我现在需要再匹配一个案例,我无法弄清楚如何做到这一点。我需要在@之后至少有3个字符,但我还需要至少3个字符,至少两个字符在一个空格之前,然后一个空格是可选的。所以我需要匹配这些模式:
@tst
@tst test
@ts t
如果没有空格或至少有两个字符,一个空格,然后至少还有一个字符,我怎么能强制执行至少三个字符?我可以把它作为两个单独的表达式,但我希望它可以用一个表达式吗?
任何人都可以指出我正确的方向..
感谢。
编辑: 好吧,我想我已经实现了我想要的目标:
(?<=( |\\s|\\A|^))@{1}(([\\w]{3,}+ ?[\\w]*)|([\\w]{2,} {1}[\\w]{1,}))
是否有更有效的方式或者应该如何做?
答案 0 :(得分:1)
我认为你可以稍微简化你的表达:
String regex = "(?<=(\\s|\\A|^))@(\\w{2,} ?\\w+)";
我做了什么:
我不确定(!)
部分的重点是什么,因此在此版本中删除它以匹配您的测试用例。
答案 1 :(得分:1)
以下内容应符合您的需求:
(?<=(?<!\w)@)\w{2,} ?\w+
不要忘记在Java字符串中逃避Java中的反斜杠:
(?<=(?<!\\w)@)\\w{2,} ?\\w+
答案 2 :(得分:0)
我能想到的最简单的正则表达式是:
(?<=\s|^)@(\s*\w){3,}