Java 如何检查两个相同字符之间是否有不同的捕获字符?
我想检查一个字符串是否具有相同的起始字符和结束字符,以及两者之间的所有字符是否与起始字符和结束字符不同 示例:Java 如何检查两个相同字符之间是否有不同的捕获字符?,java,regex,Java,Regex,我想检查一个字符串是否具有相同的起始字符和结束字符,以及两者之间的所有字符是否与起始字符和结束字符不同 示例: >代码> ABCDA“应 PASS ,因为它以 A/开头和结尾,在中间只有“< > >, >代码> > 失败/强>,因为它在开始和结束时不仅有 ,而且在中间, “bcdefb”应该通过 — 参见第一个示例 我试图通过(.(?!.\1)\1执行此操作,但失败了,因为没有长度限制,字符串的结尾也为负数。您可以使用 ^(.(?:(!\1)。*\1$ 看。如果字符串可以包含换行
应该通过 — 参见第一个示例“bcdefb”
(.(?!.\1)\1执行此操作,但失败了,因为没有长度限制,字符串的结尾也为负数。您可以使用
^(.(?:(!\1)。*\1$
看。如果字符串可以包含换行符,请在开头添加(?s)
。详情:
^
-字符串的开头
()
-第1组:任意一个字符
(?:(?!\1)。*
-任何一个字符不等于组1中捕获的字符,零次或多次
\1
-反向引用组1值,此处需要与组中相同的字符
$
-字符串结束
在Java中,使用String#matches()
,您可以省略锚点:
string.matches(“()(:(!\\1)。*\\1”)