Шаблон ^([a-z]*)<[A-Z]*>\1$
будет соответствовать этим строкам (, как видно на rubular.com ):
ab<XYZ>ab
<XYZ>
bleh<FOO>bleh
<>
Это не будет соответствовать этим:
ab<XYZ>de
x<XYZ>y
FOO<foo>FOO
То есть шаблон похож на
tag
<CONTENT>
tag
То же самое tag
появляется как для «префикса», так и для «суффикса». Тег состоит из нуля или более строчных букв. Содержимое состоит из нуля или более заглавных букв. Префиксная часть сопоставляется и захватывается группой 1, а затем обратная ссылка \1
используется для повторного сопоставления этой строки с суффиксом.
[…]
- это класс символов . Нечто вроде [aeiou]
соответствует одному из строчных гласных. [^…]
является отрицательным классом символов. [^aeiou]
соответствует одному из всего, кроме строчных гласных.
В качестве строкового литерала Java используется шаблон "^([a-z]*)<[A-Z]*>\\1$"
.