2011-06-22 3 views
0

J'ai un modèle comme -Quel sera le Regex pour mon motif requis

public static void myMethod(int Val , String Val){} 

si public \ statique \ vide \ myMethod (int \ Sval \ s, \ sChaîne \ Sval)

mais si ma méthode a plus d'espace qu'une statique publique, elle échoue. Alors, comment faire un motif concret.

De plus la partie à l'intérieur du support ne fonctionne pas, suggérez-moi le moyen de résoudre.

Répondre

4

Utilisez \s+ pour correspondre à une ou plusieurs occurrence, et \s* pour correspondre à zéro ou plusieurs occurrences. Échapper les parenthèses pour qu'elles ne soient pas interprétées comme des opérateurs de regroupement. Cela dit, il semble que vous essayiez d'analyser le code Java avec une expression régulière. Ce n'est pas possible puisque Java (comme le infamous [X]HTML) n'est pas une langue régulière.

+1

Je voudrais juste changer le + avec un * avant la virgule – jclozano

+0

Merci - bon appel . Après la virgule, aussi. –

+0

Vous êtes les bienvenus pour la regex –

1

utilisation \s+ au lieu

+0

'\' s * permet pas d'espace, et 'privatestaticvoid' n'est pas légitime –

+0

@Ben si vrai, je tapais trop vite: P – OscarRyz

1

Quelques choses, mais vous êtes sur la bonne voie. Remplacez votre \s par \s+ pour indiquer 1 ou plusieurs caractères d'espacement.

De plus, vos parens ne fonctionnent pas car ce sont des caractères regex réservés. Vous devez leur échapper pour qu'ils soient interprétés littéralement

/public\s+static\s+void\s+myMethod\s*\(\s*int\s+Val\s*,\s*String\s+Val\s*\)/ 
1

Essayez d'utiliser le « un ou plusieurs » modificateur (+) pour correspondre à plusieurs occurrences:

public\s+static\s+void\s+myMethod...