2016-07-25 3 views
-1

Я пытаюсь создать шаблон для следующей строкишаблон регулярного выражения

  1. abc deff <XYZ>.xls
  2. <XYZ> abc.xlsx
  3. ABCD.csv

, используя ниже шаблон

(\\w*)(\\<)(\\w*)(\\>)(\\w*)(\\.)(\\w*) 

, но он не работает для меня

ожидается выход

1. abc deff <XYZ>.xls 
    g1 = abc deff 
    g2 = XYZ 
    g3 = xls 

2. <XYZ> abc.xlxs 
    g1 = "" 
    g2 = XYZ 
    g3 = xlxs 

3. ABCD.csv 
    g1 = ABCD 
    g2 = "" 
    g3 = csv 

Заранее спасибо за помощь

+0

Если вы пытаетесь сопоставить файлы, вы, вероятно, лучше с помощью PathMatcher, используя регулярное выражение или glob, а не весь шаблон. – Mena

+0

Как получилось, что ваш третий матч содержит 'csv' в группе 3, если в строке не было' csv'? –

ответ

0

Возможно использование ? и (?=...(...)) синтаксиса поможет вам. Попробуйте что-то вроде этого:

([^\\.<]*)(<[^>]+>)?(?=\\.(.*)) 

Для фразы abc deff <XYZ>.xls он дает три группы abc deff, <XYZ> и xls. При использовании положительного внешнего вида вы должны уклониться от <> в матче, если это необходимо, посмотрите, как это делается для xls -пользовательской группы.

+0

благодарит Андрея за ваш комментарий – vijendra

Смежные вопросы