Regex expression optionel
je vous pose mon problème.
Je ne comprend pas pourquoi non regexp ne fonctionne pas :
Code:
1 2 3 4 5 6 7 8
|
Pattern pattern=Pattern.compile(".*\"((?:\\d{1,3}\\.){3}\\d{1,3}).*\"((?:\\d{1,3}\\.){3}\\d{1,3}).*(ip vrf forwarding [A-Za-z_0-9]*)?.*");
Matcher m=pattern.matcher("Framed-IP-Address=\"10.121.19.4\", Framed-IP-Netmask=\"255.255.255.0\", cisco-avpair=\"lcp:interface-config=ip vrf forwarding AAAaAAA\\nip unnumbered loopback10116\"");
if(m.find()){
for(int i=1;i<=m.groupCount();i++)
System.out.print("groupe"+i+":("+m.group(i)+")");
System.out.println();
} |
groupe1:(10.121.19.4)groupe2:(255.255.255.0)groupe3:(null)
si je retire le ? (qui signale que le bloc est optionnel) j'obtiens bien ce que je veux dans le groupe 3 c'est a dire ip vrf forwarding VRFNAME le problème viens des autres lignes qui ne contient pas ip vrf et que je dois aussi traiter.
EDIT : J'ai regler le problème en faisant deux regexp.