2013-07-05 2 views
2

У меня есть текст, как этогоJava Regular Expression для обработки строк Содержит Следующую строку

Customer Owned 03/26 04/25 0.00 
Modem 

Здесь Модем находится в следующей строке

Теперь мне нужно записать данные в таблицу, как

Заказчик Принадлежит модем 03/26 04/25 0,00

Я написал регулярное выражение, как

([a-zA-Z = ]*) ([[0-9]{2}/[0-9]{2} ]*) (-?[0-9]*\\.[0-9]+) 

Я получаю описание как «Заказчик», а не «Пользовательский модем». Есть ли способ справиться с Regex?

+0

Может быть, вы можете сделать первый проход над ним и избавиться от новых линий между первой и второй строками? Тогда ваше регулярное выражение будет работать так, как вы хотите. –

+1

Просьба показать, как вы используете это в коде, так как это поможет определить, как вам нужно применить модификатор шаблона, чтобы сделать его многострочным. Однако даже если это была многострочная линия, у вас нет подшаблона для захвата текста после десятичной части строки. –

+0

показать нам полный код, который вы используете – Peggy

ответ

0

Чтобы соответствовать новой строки, вы можете попробовать \ г? \ П

Обновите регулярное выражение, соответственно, включить новую строку, а также текст после

0

Пожалуйста, добавьте следующие строки в регулярном выражении. Это обнаружит конец линии на всех платформах и закроет следующую строку в последней группе. Затем вы можете объединить группу 1 и последнюю группу вместе.

(?:\n|\r|\n\r|\r\n)([a-zA-Z = ]*)$

1

Вы могли бы попробовать это регулярное выражение:

([A-Za-z ]+)([^A-Za-z]+)[\r\n]*([A-Za-z]+) 

И заменить:

\1\3 \2 

Вот demo, используя свой пример.