Джакарта Regexp 1.5 Обратные ссылки? - PullRequest
0 голосов
/ 01 апреля 2010

Почему это соответствует:

String str = "099.9 102.2" + (char) 0x0D;
RE re = new RE("^([0-9]{3}.[0-9]) ([0-9]{3}.[0-9])\r$");        
System.out.println(re.match(str));

Но это не так:

String str = "099.9 102.2" + (char) 0x0D;   
RE re = new RE("^([0-9]{3}.[0-9]) \1\r$");      
System.out.println(re.match(str));

Обратные ссылки, похоже, не работают ... Чего мне не хватает?

1 Ответ

2 голосов
/ 02 апреля 2010

Попробуйте это с этой целевой строкой:

"099.9 099.9\r"

Обратная ссылка не означает повторное выполнение этого подвыражения , это означает, что соответствует другому экземпляру любого совпадения этого подвыражения .

Вы также должны использовать две обратные косые черты в обратной ссылке:

RE re = new RE("^([0-9]{3}.[0-9]) \\1\r$");
...