никогда не используйте вид сзади, если в этом нет крайней необходимости
Вы можете уменьшить длину вида сзади с помощью фигурных скобок, например. {1,255}
.
Ваша проблема разрешима без использования взгляда сзади:
static final Pattern seqpat = Pattern.compile( "<noteinfo[^>]+(?<seq>sequence\\s*=\\s*'[\\d]*')", Pattern.MULTILINE );
прочитать файл с:
Matcher m = seqpat.matcher( s );
while( m.find() )
System.err.println( m.group( "seq" ) );
Pattern.MULTILINE
необходим, если обернута строка noteinfo
seqpat
находит (не совпадает!) Любую строку, начинающуюся с <noteinfo
и заканчивающуюся >
запрошенная последовательность записана в group( "seq" )
возможно, вам придется иметь дело с пробелами или символами новой строки между sequence
, =
и идентификатором последовательности '3'
- поэтому: \\s*=\\s*
Приведенный выше шаблон находит каждый идентификатор последовательности (даже empy)
чтобы найти только '999'
sequence-id, возьмите этот паттерн:
Pattern.compile( "<noteinfo[^>]+(?<seq>sequence\\s*=\\s*'999')", Pattern.MULTILINE );