2013-08-07 3 views
1

У меня есть следующий текстнужно регулярное выражение, чтобы удалить шаблон/строке

| 1 Стиль отступ Normal + Courier New T201_LLR_001 | 2 Стиль отступ Normal + Courier New акцептует три указателя. | 3 Стиля отступом Normal + Courier New SSC_01_SRS_0001

Мне нужно преобразовать этот текст, чтобы получить три отдельных OUTPUT

  • T2 01_LLR_001
  • акцептует три указателя
  • SSC_01_SRS_0001

Я использовал следующее регулярное (\S+_LLR_\d+)(.+)\t(SSC_.+)*

получить следующие выходные данные

  • T201_LLR_001
  • | 2 Стиль отступом Normal + Courier New акцептует три указателя |. 3 Стиль отступом Normal + Courier New
  • SSC_01_SRS_0001

Но, мне нужно, чтобы избавиться от текста |2 Style Indented Normal + Courier New" and "|3 Style Indented Normal + Courier New

Возможно ли это в регулярном выражении? Я не знаю, как использовать (?!TEXT).

+0

Что именно картина у вас есть? Мне кажется, что ваше регулярное выражение настроено именно на этот пример. –

+0

принимает текст всегда начинать с заданного шаблона, например, принимать :)? –

+0

Пожалуйста, скажите нам (алгоритмически), как «Принять три указателя» было выбрано так, что мы можем однозначно идентифицировать его в строке. – Dukeling

ответ

0

Для тех, кто не заметил этого, я вижу, есть вкладка между шрифтом и строка, хочу, это затрудняет задачу.

Это должно дать вам то, что вы хотите:

([^_\s]+_LLR_\d+)[^\t]*\t([^|]*)[^\t]*\t(SSC_.+) 

Объяснение:

Я изменил \S (не пробельные) в [^_\s] (не подчеркивания или пробелы).

Затем вы потребляете T201_LLR_001.

Затем вы потребляете все до следующей вкладки и включаете следующую вкладку, которая будет |2 Style Indented Normal + Courier New.

Затем вы потребляете все до |, которое будет Shall accept the three pointers. и сохраните его в группе, положив его в скобки.

Затем вы потребляете все до и включая следующую вкладку, которая будет |3 Style Indented Normal + Courier New.

Затем вы потребляете SSC_01_SRS_0001 и помещаете его в группу.

Java test правильно печатает:

T201_LLR_001 
Shall accept the three pointers. 
SSC_01_SRS_0001 
+0

Спасибо. У меня также есть еще одна проблема. '| 2 Style Indented Normal + Courier New' (информация о стиле) может возникать любое количество раз. Пожалуйста, помогите мне в этом? – giboo

+0

Если каждый из них разделен вкладками, вы можете просто заменить первый '[^ \ t] * \ t' на' (?: [^ \ T] * \ t) + '. – Dukeling

+0

Еще раз спасибо. Но это обновление не помогло для ввода, когда информация о стиле похожа на это »| 1 Стиль с отступом Normal + Courier New \t T201_LLR_001 | 2 Стиль с отступом Normal + Courier New \t Text1 здесь. | 2 Стиль с отступом Normal + Courier New \t | 2 Стиль Отступы Normal + Courier New \t Text2 здесь. | 2 Стиль с отступом Normal + Courier New \t | 3 Стиль с отступом Normal + Courier New \t SSC_01_SRS_0001 «здесь у нас есть информация о стиле, доступная между ними. Пожалуйста, помогите – giboo

0

Используйте другую группу для захвата |2 Style Indented Normal + Courier New и |3 Style Indented Normal + Courier New. Вы можете даже использовать группу, не связанную с захватом (? :) для этого, если хотите.

0

Попробуйте (.NET):

(?<=\|\d \w* \w* \w* \+ [a-z-A-Z0-9 ]*\t)[\w ]* 

или это один:

(?<=\|\d [a-zA-Z+ ]*\t)[\w ]* 
Смежные вопросы