\s
соответствует всем пробелам, включая разрывы строк! В сочетании с жадным квантификатором +
это означает, что (([A-z]|\\s))+
соответствует, в вашем первом примере,
Real GDP\r\n […] Percentage changes\r\n
Самый простой способ исправить это - использовать не жадный квантификатор: т.е. +?
вместо +
.
Просто для полноты я упомяну, что есть альтернативы, но они получаютболее сложныйНапример, вы можете использовать отрицательные утверждения, чтобы включить тест «если» для сопоставления пробела, который не является символом разрыва строки;или вы можете использовать класс символов [ \t]
вместо \s
, который является более ограничительным, но также более явным и, вероятно, ближе к тому, что вы хотите.