Bonjour,

Je vous propose un nouvel élément à utiliser : Developpez URL Convertor

Programme qui convertit automatiquement le contenu du presse-papiers lorsqu'il s'agit de l'URL d'une discussion ou d'un post du forum. L'URL est alors remplacé par sa forme courte.

À défaut d'avoir une utilité réelle, le programme est surtout un exemple d'utilisation d'expressions régulières alternatives avec l'unité RegExpr. Attention au nombre total de parenthèses !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function ShortURL(URL: string): string;
const
  SEARCHPATTERN1 = 'http://www.developpez.net/forums/d(\d+).+/';
  SEARCHPATTERN2 = '#post(\d+)';
  RESULTFORMAT1 = 'www.developpez.net/forums/showthread.php?t=%s';
  RESULTFORMAT2 = '#post%s';
var
  r: TRegExpr;
begin
  r := TRegExpr.Create;
  r.Expression := '(' + SEARCHPATTERN1 + SEARCHPATTERN2 + '|' + SEARCHPATTERN1 + ')';
  { Il y a quatre paires de parenthèses en tout. }
 
  if r.Exec(URL) then
  begin
    case r.SubExprMatchCount of
      3: result := Format(RESULTFORMAT1 + RESULTFORMAT2, [r.Match[2], r.Match[3]]);
      4: result := Format(RESULTFORMAT1, [r.Match[4]]);
      else
        result := 'Unexpected result: ' + IntToStr(r.SubExprMatchCount);
    end;
Qu'en pensez-vous ?

P.-S. En relisant une nouvelle fois mon code, j'ai réalisé que dans cet exemple, la première parenthèse ne sert à rien. On pourrait donc réécrire le programme ainsi (avec les modifications qui s'ensuivent) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
  r.Expression := SEARCHPATTERN1 + SEARCHPATTERN2 + '|' + SEARCHPATTERN1;
  { Il y a trois paires de parenthèses en tout. }