Bonjour,

Pour un petit programme https://github.com/alainbebe/org-mode-gtk.raku, j'essaye de lire des fichier Org-mode https://orgmode.org/org.html#Document-Structure, et je cale sur la lecture des tags.
En résumé, un tache peut s'écrire comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
* TODO [#A] ma tache :montag:
Et j'essaye de checker avec une regex et récupérer le contenu, mais je bloque sur les tags. Voici un code de test
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
22
23
24
25
26
27
28
29
30
#!/usr/bin/env raku
use v6;
 
my @l;
push(@l,"* simple titre");
push(@l,"* TODO simple titre avec todo");
push(@l,"* TODO [#A] simple titre avec todo et priorité");
push(@l,"* [#A] simple titre avec priorité");
push(@l,"* TODO [#A] avec tout :test:suite:");
push(@l,"* juste un tag :essai:");
for @l {
    say "original : ",$_;
#    if $_~~ /^"* " ((["TODO"|"DONE"])" ")? ((\[\#[A|B|C]\])" ")? (.*) / { # ce qui marche mais évidemment ne sépare pas tache et tag
#    if $_~~ /^"* " ((["TODO"|"DONE"])" ")? ((\[\#[A|B|C]\])" ")? (.*?) (" "(\:.*))? / { # ce qui devrait marcher mais qui ne marche pas du tout
    if $_~~ /^"* " ((["TODO"|"DONE"])" ")? ((\[\#[A|B|C]\])" ")? (.*?) (" "(\:.*)) / { # ce qui marche quand il y a un :tag:, les deux derniers exemples
        print "résultat : * ";
        print $0[0]~" " if $0[0];
        print $1[0]~" " if $1[0];
        print $2;
        print $3 if $3;
        say "";
        say "todo     : "~$0[0]~" " if $0[0];
        say "priority : "~$1[0]~" " if $1[0];
        say "tache    : "~$2;
        say "tag      : "~$3[0] if $3[0];
    } else {
        say "Plus ça rate et plus on a de chances que ça marche..."
    }
    say "";
}
Une idée ?