使用正则表达式将字符恰好匹配一次

时间:2015-07-16 21:39:50

标签: java regex

如何将一个字符与Java中的正则表达式完全匹配?让我们说我想要找到一个只包含一次数字3的字符串,它并不重要。

我尝试用"。* 3 {1}。*"但显然这也符合" 330"正如我所指出的那样,我不关心它是什么角色。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

^[^3]*3[^3]*$

匹配(不是三个),然后是三个,然后是(不是三个)。

修改:在开头和结尾添加^$。这将强制正则表达式匹配整行。谢谢@Bobbyrogers和@Mindastic

答案 1 :(得分:3)

非正则表达式解决方案:

int index = s.indexOf('3');
boolean unique = index != -1 && index == s.lastIndexOf('3');

如果第一次和最后一次出现在同一个地方且存在于字符串中(不是-1),则该字符基本上是唯一的。