Hello,
bon dans ton cas, le top c'est quand meme les regexp ... meme si ça peut paraître compliqué ça reste plus élégant d'une kyrielle de Instr() Left() ou autres aléatoires ..
Seule contrainte, ajouter la référence Microsoft VBScript Regular Expressions (dans mon cas la 5.5)
1 2 3 4 5 6 7 8 9 10
| Function SupprParentheses(ByVal strExp As String, ByVal strPatt As String) As String
Dim reg As New VBScript_RegExp_55.RegExp
reg.Pattern = strPatt
SupprParentheses = reg.Replace(strExp, "$1")
Set reg = Nothing
End Function |
et ensuite ... il faut un peu avoir tâté les regexp ... mais vite fait ça donne ça :
supprparentheses("douze travaux d'astérix (les)", "(.*)(\(.*\))$")
Dans ton cas, il faudra toujours utiliser le pattern suivant : "(.*)(\(.*\))$"
explications du pattern
(.*)(\(.*\))$
- le pattern délimite deux zones avec les parenthèses capturantes ()()
- chacune sera renvoyée par une variable $1 et $2 ...
- le pattern indique que la premiere partie $1 sera précèdera le signe parenthèse, on met un antislash car la parenthèse est un caractère réservé.
- .* indique que nous capturons toute chaine vide ou non ...
- le $ final indique la fin de la chaîne, donc la capture ne portera que sur une parenthèse en fin de chaîne ...
Partager