Snažím sa vytvoriť regex, ktorý bude hľadať počet lomítok dopredu (/) na začiatku reťazca a ak sú ich nepárne počety spätných lístkov, budú nahradené prázdnym reťazcom
String regex = "^/(//)*";
System.err.println("Case1: " + "/".replaceAll(regex,""));
System.err.println("Case2: " + "//".replaceAll(regex,""));
System.err.println("Case3: " + "///".replaceAll(regex,""));
System.err.println("Case4: " + "/b".replaceAll(regex,""));
System.err.println("Case5: " + "//b".replaceAll(regex,""));
System.err.println("Case6: " + "///b".replaceAll(regex,""));
Môj regex pracuje s prípadmi 1,3,4 a 6, ale v prípadoch 2 a 5 je to tlač / a / b ako výstup.
Prosím pomôžte.
odpovede:
3 pre odpoveď č. 1Pridajte záporný vzhľad (?!/)
vo vašom regexe, aby ste skontrolovali, či už neexistuje /
po vyrovnaní kurzov. Vo vašom prípade je jeho početné nepárne číslo /
od //
alebo ///
, preto nepracoval.
String regex = "^/(//)*(?!/)";
^^^^^ here
1 pre odpoveď č. 2
skúste to
String regex = "^/(//)*(?=[^/]|$)";