Java регулярное выражение содержит 2 значения (то же значение внутри) - PullRequest
0 голосов
/ 30 ноября 2018
String input = " Fa0/1     --- Cisco IP phone notconnected   20       a-full    auto    10/100BaseTX"
String DISABLED = "disabled";
String CONNECTED = "connected";
String NOTCONNECTED = "notconnected";    
String REGEXP_STATUS = "^(\\s*)(\\w+/\\d+|\\w+/\\d+/\\d+)(\\s+)(.*|\\*|-)(" + NOTCONNECTED + "|" + DISABLED + "|" + CONNECTED + ")(\\s+)(\\d+|trunk)(\\s+)(\\w+|a-\\w+)(\\s+)(\\w+|a-\\d+)(\\s+)(\\w+|/+).*";

Моя проблема в matcher.group(5) return CONNECTED, если ввод NOTCONNECTED, потому что СОЕДИНЕНО слово в НЕ СОЕДИНЕНО

РЕДАКТИРОВАТЬ:

Я пытаюсь:

String REGEXP_STATUS = "^(\\s*)(\\w+/\\d+|\\w+/\\d+/\\d+)(\\s+)(.*|\\*|-)(" + DISABLED + "|.*" + CONNECTED + ")(\\s+)(\\d+|trunk)(\\s+)(\\w+|a-\\w+)(\\s+)(\\w+|a-\\d+)(\\s+)(\\w+|/+).*";

но matcher.group(5) возврат CONNECTED и matcher.group(4) возврат --- Cisco IP phone not

1 Ответ

0 голосов
/ 30 ноября 2018

Изменение его на использование ленивого квантификатора .*? исправит это.
Но эти чередующиеся части (. *? | \* | - ) никогда не будут затронуты.

Вот читабельный исправлено, версия вашего регулярного выражения

 ^ 
 ( \s* )                                 # (1)
 ( \w+ / \d+ | \w+ / \d+ / \d+ )         # (2)
 ( \s+ )                                 # (3)
 ( .*? )                                 # (4)
 (                                       # (5 start)
      notconnected
   |  
      disabled
   |  
      connected
 )                                       # (5 end)
 ( \s+ )                                 # (6)
 ( \d+ | trunk )                         # (7)
 ( \s+ )                                 # (8)
 ( \w+ | a- \w+ )                        # (9)
 ( \s+ )                                 # (10)
 ( \w+ | a- \d+ )                        # (11)
 ( \s+ )                                 # (12)
 ( \w+ | /+ )                            # (13)
 .* 

Вывод

 **  Grp 0 -  ( pos 0 : len 87 ) 
 Fa0/1     --- Cisco IP phone -  notconnected   20       a-full    auto    10/100BaseTX  
 **  Grp 1 -  ( pos 0 : len 1 ) 

 **  Grp 2 -  ( pos 1 : len 5 ) 
Fa0/1  
 **  Grp 3 -  ( pos 6 : len 5 ) 

 **  Grp 4 -  ( pos 11 : len 22 ) 
--- Cisco IP phone -    
 **  Grp 5 -  ( pos 33 : len 12 ) 
notconnected  
 **  Grp 6 -  ( pos 45 : len 3 ) 

 **  Grp 7 -  ( pos 48 : len 2 ) 
20  
 **  Grp 8 -  ( pos 50 : len 7 ) 

 **  Grp 9 -  ( pos 57 : len 6 ) 
a-full  
 **  Grp 10 -  ( pos 63 : len 4 ) 

 **  Grp 11 -  ( pos 67 : len 4 ) 
auto  
 **  Grp 12 -  ( pos 71 : len 4 ) 

 **  Grp 13 -  ( pos 75 : len 2 ) 
10  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...