2011-11-17 3 views
2

String.replaceAll je besoin d'une expression régulière qui peut être utilisé avec la méthode replaceAll de la classe String pour remplacer toutes les instances de * avec .* sauf pour celui qui a queue \Expression régulière pour

-à-dire la conversion serait

[any character]*[any character] => [any character].*[any character] 
* => .* 
\* => \* (i.e. no conversion.) 

Quelqu'un peut-il m'aider s'il vous plaît?

Répondre

4

Utilisez lookbehind.

String resultString = subjectString.replaceAll("(?<!\\\\)\\*", ".*"); 

Explication:

"(?<!" +  // Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind) 
    "\\\\" +  // Match the character “\” literally 
")" + 
"\\*"   // Match the character “*” literally 
+0

Grand. Merci. Cela a fonctionné comme un charme. –

+0

@ SalmanA.Kagzi Vous êtes les bienvenus. – FailedDev

1

il peut être possible de le faire sans groupes de capture, mais cela devrait fonctionner:

myString.replaceAll("\\*([^\\\\]|$)", "*.$1");