соответствие регулярных выражений Java - PullRequest
2 голосов
/ 17 августа 2010

Какое регулярное выражение может соответствовать следующим двум строкам.

Hi<Dog>Hi и <Dog> в данном тексте.

Обновление:

Какое регулярное выражение будет соответствовать этому?

<FONT FACE="Verdana" SIZE="16" COLOR="#0B333C" LETTERSPACING="0" KERNING="0">If you access the web site click the link below:<FONT SIZE="12"></FONT></FONT>

<FONT.*?<\/FONT> соответствует только до первого </FONT>

Ответы [ 4 ]

3 голосов
/ 17 августа 2010

Шаблон ^([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$".

1 голос
/ 17 августа 2010

Не уверен, что вы пытаетесь сделать, но это охватывает все возможные группы:

([a-z]+)?(<[A-Z]+>)([a-z]+)?

Удачи!

0 голосов
/ 17 августа 2010

Используйте http://www.weitz.de/regex-coach/, чтобы проверить, соответствует ли регулярное выражение строке

Это единственный совет, который я могу дать вам с информацией, которую вы нам предоставляете.

0 голосов
/ 17 августа 2010

С манжеты, думаю, должно быть что-то вроде (.*)<XYZ>\1

...