Java 将字符与正则表达式精确匹配一次
在Java中,如何将一个字符与正则表达式精确匹配一次?假设我想寻找只包含一次数字3的字符串,不管它在哪里 我试着用“*3{1}.*”来做这件事,但显然这也会匹配“330”,因为我指定了句点,我不在乎它是什么字符。我怎样才能解决这个问题Java 将字符与正则表达式精确匹配一次,java,regex,Java,Regex,在Java中,如何将一个字符与正则表达式精确匹配一次?假设我想寻找只包含一次数字3的字符串,不管它在哪里 我试着用“*3{1}.*”来做这件事,但显然这也会匹配“330”,因为我指定了句点,我不在乎它是什么字符。我怎样才能解决这个问题 ^[^3]*3[^3]*$ 匹配(不是三个),然后三个,然后(不是三个) 编辑:在开头和结尾添加^和$。这将迫使正则表达式匹配整行。感谢@Bobbyrogers和@Mindastic非正则表达式解决方案: int index = s.indexOf('3');
^[^3]*3[^3]*$
匹配(不是三个),然后三个,然后(不是三个)
编辑:在开头和结尾添加^
和$
。这将迫使正则表达式匹配整行。感谢@Bobbyrogers和@Mindastic非正则表达式解决方案:
int index = s.indexOf('3');
boolean unique = index != -1 && index == s.lastIndexOf('3');
基本上,如果第一次和最后一次出现在同一个位置,并且存在于字符串中(不是-1),则字符是唯一的。您可以举一些例子,通过还是不通过?这将不会检查整个字符串,并将与示例“330”中的前3个匹配。如果要检查整个字符串是否只包含一个3,则需要使用
^
和$
指定。我认为您的regexp缺少一些内容。它应该是^[^3]*3[^3]*$,因为如果不是,它将匹配4444344443,例如。@Mindastic:这取决于API