30

Au passage, t'es pas obligé de te taper les expressions régulières à la main, y'a des sites qui aident bien pour ça :

pour les créer
pour les convertir en pseudo-code
pour les tester
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

31

./29 > ben a priori pour ne pas revenir en mode normal, tu remplaces « context="#stay" » par « context="ModeOùOnPeutDétecterUneInstruction" »

À vue de nez, je dirais que AfterLabel devrait logiquement être un mode qui convient (on a vu un label donc on est après un label, ça me paraît logique, mais bon cheeky). Mais je n'ai pas la description du mode AfterLabel dans ton extrait (enfin plus exactement j'ai sa première ligne, cf. la dernière ligne de ton extrait, le tag ouvrant context avec l'attribut name="AfterLabel" ça devrait être ça. Mais tout ce que je peux te dire là c'est que lineEndContext="#pop" a a priori pour effet de revenir au mode précédent après un passage à la ligne, le reste je ne le vois pas)
Folco (./29) :
rah je suis content de te lire dire que c'est pas très clair tout ça biggrin.gif
Ben c'est le choix des noms d'attributs le problème : tu en as un qui s'appelle « attribute » ce qui n'apporte aucune information, et un autre qui s'appelle « context » parce qu'il est censé avoir une valeur de type context, ce qui ne donne aucune indication sur à quoi *sert* cet attribut... (ils auraient appelé ça respectivement « style » et « contextAfterMatch » j'aurais compris plus vite grin)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

32

Voilà \o/
   <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        <RegExpr      attribute="Label" context="#stay" String="^[A-Za-z0-9_$@\][A-Za-z0-9_.$@]*:" />
        <RegExpr      attribute="Label" context="AfterLabel" String="^[A-Za-z0-9_$@][A-Za-z0-9_.$@]*(?=\s+[_\w])" />
		<RegExpr      attribute="Normal Text" context="AfterLabel" String="^\s+" />
        <DetectChar   attribute="Comment" context="Commentar 1" char=";" />
	  </context>
	  <context attribute="Normal Text" lineEndContext="#pop" name="AfterLabel">
        <keyword      attribute="Instruction" context="Instruction" String="instructions" />
		<keyword      attribute="Keyword" context="#stay" String="keywords" />
		<keyword      attribute="Register" context="#stay" String="registers" />
        <RegExpr      attribute="Hex" context="#stay" String="#?\$[0-9a-fA-F]+" />
        <RegExpr      attribute="Binary" context="#stay" String="#?%[01]+" />
        <RegExpr      attribute="Decimal" context="#stay" String="#?[-+]?[1-9][0-9]*" />
        <RegExpr      attribute="Normal Text" context="#stay" String="[A-Za-z_.$][A-Za-z0-9_.$]*" />
        <RegExpr      attribute="Char" context="#stay" String="'(\x[0-9a-fA-F][0-9a-fA-F]?|\[0-7]?[0-7]?[0-7]?|\.|.)" />
        <DetectChar   attribute="String" context="String" char="&quot;" />
        <DetectChar   attribute="Comment" context="Commentar 1" char=";" />
        <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{@}~" />
      </context>
      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1" />
      <context attribute="String" lineEndContext="#pop" name="String">
        <LineContinue  attribute="String" context="Some Context" />
        <HlCStringChar attribute="String Char" context="#stay" />
        <DetectChar    attribute="String" context="#pop" char="&quot;" />
      </context>
	  <context attribute="Instruction" lineEndContext="#pop" name="Instruction">
        <RegExpr      attribute="Instruction" context="#pop" String="(\.[lwbs])|[^a-zA-Z]" />
	  </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Some Context" />
    </contexts>

    <itemDatas>
      <itemData name="Normal Text"  defStyleNum="dsNormal"   />
      <itemData name="Label"        defStyleNum="dsNormal"   />
      <itemData name="Keyword"      defStyleNum="dsKeyword"  />
      <itemData name="Decimal"      defStyleNum="dsDecVal"   />
      <itemData name="Hex"          defStyleNum="dsBaseN"    />
      <itemData name="Binary"       defStyleNum="dsBaseN"    />
      <itemData name="Char"         defStyleNum="dsChar"     />
      <itemData name="String"       defStyleNum="dsString"   />
      <itemData name="String Char"  defStyleNum="dsChar"     />
      <itemData name="Symbol"       defStyleNum="dsNormal"   />
      <itemData name="Comment"      defStyleNum="dsComment"  />
	  <itemData name="Instruction"	defStyleNum="dsNormal"	 />
	  <itemData name="Register"		defStyleNum="dsNormal"   />
    </itemDatas>
  </highlighting>

  <general>
    <comments>
      <comment name="singleLine" start=";" />
    </comments>
    <keywords casesensitive="1" weakDeliminator="_$" />
  </general>
</language>

33

<contexts> 
   <context attribute="Normal Text" lineEndContext="#stay" name="Normal"> 
      <RegExpr      attribute="Label" context="#stay" String="^[A-Za-z0-9_$@\][A-Za-z0-9_.$@]*:" /> 
      <RegExpr      attribute="Label" context="AfterLabel" String="^[A-Za-z0-9_$@][A-Za-z0-9_.$@]*(?=\s+[_\w])" /> 
      <RegExpr      attribute="Normal Text" context="AfterLabel" String="^\s+" /> 
      <DetectChar   attribute="Comment" context="Commentar 1" char=";" /> 
   </context>
   <context attribute="Normal Text" lineEndContext="#pop" name="AfterLabel"> 
      <keyword      attribute="Instruction" context="Instruction" String="instructions" /> 
      <keyword      attribute="Keyword" context="#stay" String="keywords" /> 
      <keyword      attribute="Register" context="#stay" String="registers" /> 
      <RegExpr      attribute="Hex" context="#stay" String="#?\$[0-9a-fA-F]+" /> 
      <RegExpr      attribute="Binary" context="#stay" String="#?%[01]+" /> 
      <RegExpr      attribute="Decimal" context="#stay" String="#?[-+]?[1-9][0-9]*" /> 
      <RegExpr      attribute="Normal Text" context="#stay" String="[A-Za-z_.$][A-Za-z0-9_.$]*" /> 
      <RegExpr      attribute="Char" context="#stay" String="'(\x[0-9a-fA-F][0-9a-fA-F]?|\[0-7]?[0-7]?[0-7]?|\.|.)" /> 
      <DetectChar   attribute="String" context="String" char="&quot;" /> 
      <DetectChar   attribute="Comment" context="Commentar 1" char=";" /> 
      <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{@}~" /> 
   </context> 
   <context attribute="Comment" lineEndContext="#pop" name="Commentar 1" /> 
   <context attribute="String" lineEndContext="#pop" name="String"> 
      <LineContinue  attribute="String" context="Some Context" /> 
      <HlCStringChar attribute="String Char" context="#stay" /> 
      <DetectChar    attribute="String" context="#pop" char="&quot;" /> 
   </context> 
   <context attribute="Instruction" lineEndContext="#pop" name="Instruction"> 
      <RegExpr      attribute="Instruction" context="#pop" String="(\.[lwbs])|[^a-zA-Z]" />
   </context> 
   <context attribute="Normal Text" lineEndContext="#pop" name="Some Context" /> 
</contexts>
(réindenté afin qu'on puisse le lire embarrassed)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

34

p" name="Some Context" /> </contexts>
Ah merde, je viens de le faire comme ça :     <contexts>
	<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        	<RegExpr      attribute="Label" context="#stay" String="^[A-Za-z0-9_$@\][A-Za-z0-9_.$@]*:" />
        	<RegExpr      attribute="Label" context="AfterLabel" String="^[A-Za-z0-9_$@][A-Za-z0-9_.$@]*(?=\s+[_\w])" />
		<RegExpr      attribute="Normal Text" context="AfterLabel" String="^\s+" />
        	<DetectChar   attribute="Comment" context="Commentar 1" char=";" />
	</context>
	
	<context attribute="Normal Text" lineEndContext="#pop" name="AfterLabel">
        	<keyword      attribute="Instruction" context="Instruction" String="instructions" />
		<keyword      attribute="Keyword" context="#stay" String="keywords" />
		<keyword      attribute="Register" context="#stay" String="registers" />
	        <RegExpr      attribute="Hex" context="#stay" String="#?\$[0-9a-fA-F]+" />
	        <RegExpr      attribute="Binary" context="#stay" String="#?%[01]+" />
	        <RegExpr      attribute="Decimal" context="#stay" String="#?[-+]?[1-9][0-9]*" />
	        <RegExpr      attribute="Normal Text" context="#stay" String="[A-Za-z_.$][A-Za-z0-9_.$]*" />
	        <RegExpr      attribute="Char" context="#stay" String="'(\x[0-9a-fA-F][0-9a-fA-F]?|\[0-7]?[0-7]?[0-7]?|\.|.)" />
	        <DetectChar   attribute="String" context="String" char="&quot;" />
	        <DetectChar   attribute="Comment" context="Commentar 1" char=";" />
	        <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{@}~" />
	</context>
      
	<context attribute="Comment" lineEndContext="#pop" name="Commentar 1" />
	
	<context attribute="String" lineEndContext="#pop" name="String">
		<LineContinue  attribute="String" context="Some Context" />
		<HlCStringChar attribute="String Char" context="#stay" />
		<DetectChar    attribute="String" context="#pop" char="&quot;" />
	</context>
	
	<context attribute="Instruction" lineEndContext="#pop" name="Instruction">
		<RegExpr      attribute="Instruction" context="#pop" String="(\.[lwbs])|[^a-zA-Z]" />
	</context>
      
	<context attribute="Normal Text" lineEndContext="#po

C'est pas bien les tabs de 8 pour le xml ?

35

Ah euh osef de la taille des tab a priori, le pb avec 8 c'est juste que tu défonces la marge de droite très rapidement pour peu que ton document soit un peu structuré (bon là c'est pas trop le cas, ça va cheeky. Mais tu as utilisé 4, pas 8 grin. Ceci dit tu m'as quand même collé un ascenseur horizontal tongue). Non j'ai juste posté ça parce que dans ton post ça n'était pas indenté du tout et que je ne peux pas analyser le code sans avoir sous les yeux une version indentée proprement ^^
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

36

Les 800*600, c'est obsolète. embarrassed

37

Mon écran fait un peu 1920×1200, mais ce qui compte c'est plutôt la largeur de la fenêtre, gros malin grin
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

38

Ah oui zut triso

Vla un extrait de la doc :
Voici à quoi une règle ressemble :
<RuleName attribute="(identifier)" context="(identifier)" [attributs propres à la règle] />

L'attribut identifie le style à utiliser pour les caractères correspondants par nom, et le contexte identifie le contexte à utiliser à partir de cet endroit.
Le contexte peut être identifié par :
Un identifiant, qui est le nom de l'autre contexte.
Un ordre demandant au moteur de rester dans le contexte actuel (#stay) ou de revenir à un contexte précédemment utilisé dans la chaîne (#pop).
Pour reculer de plusieurs étapes, le mot-clé #pop peut être répété : #pop#pop#pop.
Certaines règles peuvent avoir des sous-règles qui ne sont ensuite évaluées que si la règle parent correspondait. La chaîne entière concordante se verra affecter l'attribut défini par la règle parent. Voici à quoi ressemble une règle ayant des sous-règles :
<RuleName (attributes)>
<ChildRuleName (attributes) />
...</RuleName>



C'est marrant parce que identé, je commence déjà à y voir plus clair, comme quoi faut pas grand chose des fois ^^

39

Bon à part ça je ne comprends pas bien, est-ce que "instructions", "keywords" et "registers" sont des mots-clefs de l'asm confus (si ça n'est pas le cas je ne vois pas du tout à quoi correspondent les éléments keyword)

Je ne suis pas expert en asm, mais il me semble que tout ceci est bizarre. À quoi est-ce que tu reconnais une instruction ? À quoi est-ce que tu reconnais un label ? J'ai l'impression que ce qui matche une instruction est la deuxième regexp dans le contexte "Normal", mais si c'est le cas cette règle est erronée puisqu'elle indique d'afficher l'instruction dans le style... label triso. Par ailleurs est-il vrai qu'une instruction doit obligatoirement être en début de ligne ?? Est-ce vrai d'un label ?

edit (cross) : oui ok c'est bien ce que j'avais induit (#chevilles#), ça confirme donc que ton fichier est très bizarre.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

40

Résumons ce que je comprends :
Le mode normal sert à lire le début d'une ligne. Le mode AfterLabel sert à lire la suite d'une ligne dans certains cas.

Si au début de la ligne on a une chaîne (de caractères autorisés) qui finit par ':' on écrit cette chaîne en style label et tout le reste de la ligne est écrit en style de base.

CETTE RÈGLE EST LOUCHE pour moi mais je connais mal la syntaxe asm : Si au début de la ligne on a une chaîne qui ne finit pas par ":" et que plus loin sur la ligne (après des espaces) on a un _ ou un \w, on écrit également cette chaîne en style label, et après on passe en mode AfterLabel.

Si la ligne commence par des espaces, on passe directement en mode AfterLabel.

Une fois qu'on est en mode AfterLabel (donc typiquement dans une ligne qui commence par des espaces, mais aussi après quelque chose qui matche la règle 2), on utilise un style spécifique pour : les constantes littérales (hexa, binaire, chaîne etc.), les symboles, et les trois mots-clefs "registers", "instructions" et "keywords", ainsi que pour les commentaires. Tout le reste est en style de base.

Et c'est à peu près tout. Je ne vois rien qui correspond à une instruction dans tout ça, et je ne vois pas du tout à quoi correspond le deuxième cas de label.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

41

T'as raison, j'en suis arrivé à la même conclusion : c'est le gros bordel triso

En assembleur (A68k, qui nous occupe ici), on peut avoir sur une ligne :
- un label, nécessairement au début et qui ne se termine pas nécessairement par ':' (même si c'est crade, hein PpHd embarrassed)
- une instruction ou une macro, qui commence forcément pas en début de ligne
- un commentaire, commençant par ';' n'importe où sur la ligne

Devant ce bordel, je crois que je vais tenter de ré-écrire les règles.


Pour répondre à ta question :
    <itemDatas>
      <itemData name="Normal Text"  defStyleNum="dsNormal"   />
      <itemData name="Label"        defStyleNum="dsNormal"   />
      <itemData name="Keyword"      defStyleNum="dsKeyword"  />
      <itemData name="Decimal"      defStyleNum="dsDecVal"   />
      <itemData name="Hex"          defStyleNum="dsBaseN"    />
      <itemData name="Binary"       defStyleNum="dsBaseN"    />
      <itemData name="Char"         defStyleNum="dsChar"     />
      <itemData name="String"       defStyleNum="dsString"   />
      <itemData name="String Char"  defStyleNum="dsChar"     />
      <itemData name="Symbol"       defStyleNum="dsNormal"   />
      <itemData name="Comment"      defStyleNum="dsComment"  />
	  <itemData name="Instruction"	defStyleNum="dsNormal"	 />
	  <itemData name="Register"		defStyleNum="dsNormal"   />
    </itemDatas>
  </highlighting>

  <general>
    <comments>
      <comment name="singleLine" start=";" />
    </comments>
    <keywords casesensitive="1" weakDeliminator="_$" />
  </general>

42

à quoi ça sert qu'on vous propose des outils pour rendre tout ça plus lisible (bon ok, les couleurs sucent) si c'est pour massacrer la mise en page avec des pâtés de [pre] ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

43

Merci, pas pensé, puis c'est pas tous les jours que je poste du xml, donc je connaissais pas cette feature de mirari \o/

44

(il y a même un contexte qui s'appelle « some context » triso)

\, au fait ?) :<context attribute="Normal Text" lineEndContext="#stay" name="Label"> <RegExpr attribute="Label" context="AfterLabel" String="^[A-Za-z0-9_$@\][A-Za-z0-9_.$@]*:?\s+" /> <DetectChar attribute="Comment" context="Commentar 1" char=";" /> </context>Je dirais d'après ce que tu me dis que tout le contexte Normal pourrait être rebaptisé Label (vu que ça ne parse que les labels, contrairement à ce que son nom indique) et reformulé de la façon suivante (est-ce qu'un label a le droit de commencer par le caractère Donc ça ça va mettre en couleur "label" tout ce qui est en début de ligne et matche la regexp, et en "normal text" tout ce qui est en début de ligne et ne la matche pas (autrement dit n'est pas un label correct, si la regexp est bonne)

Ensuite je dirais que dans le mode AfterLabel les éléments keyword sont erronés et qu'il faut les virer (à moins que "instructions" et "registers" soient vraiment des mots-clefs en assembleur, mais j'ai un doute ??), et que la RegExp qui a pour style "normal text" ne sert à rien (puisque normal text c'est le style par défaut justement triso). Il faut aussi ajouter une regexp pour les instructions. Si je ne me trompe pas, il ne peut y avoir qu'une instruction et ses arguments sont forcément après, non ? donc tu peux décomposer en mettant aussi un contexte AfterInstruction. Si une constante littérale ne peut apparaître qu'après une instruction, ça n'est pas la peine de mettre les règles dans AfterLabel, il vaut mieux les mettre dans AfterInstruction. Je verrais bien un truc comme ça :
<context ... name="AfterLabel">
    <RegExpr attribute="Instruction" context="AfterInstruction" String="blabla" />
    <DetectChar   attribute="Comment" context="Commentar 1" char=";" />
</context>
<context ... name="AfterInstruction"
    <RegExpr attribute="Hex" ... />
    ... [mettre ici ce qui était dans AfterLabel]
    <RegExpr attribute="Register" String="blibli" />
</context>

où "blabla" qui reconnaît une instruction doit être un truc du genre "[a-z]+(\.[bwl])?" (d'après ce que je crois connaître de la syntaxe asm grin)
et "blibli" qui reconnaît un registre doit être un truc du genre "sp|pc|[ad][0-7]" (idem)

Zephyr > oh, je ne connaissais pas non plus love (mais il ne propose pas des tabs de 3 mourn grin) (plus sérieusement, top)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

45

Ouais, je vais refaires les règles. En plus, il manque pas mal de symboles, et il y a beaucoup d'erreurs... Merci de m'avoir aidé à y voir plus clair !

Au fait, pour les registres et les instructions, il y a ça dans le fichier :
    <list name="keywords">
		<item>include</item>
		<item>incbin</item>
		<item>even</item>
		<item>cnop</item>
		<item>xdef</item>
...
	<list name="instructions">
		<item>abcd</item>
		<item>add</item>
		<item>adda</item>
		<item>addi</item>
...
	<list name="registers">
		<item>a0</item>
		<item>a1</item>
		<item>a2</item>
		<item>a3</item>

46

Ah ok, donc ça doit correspondre à ces éléments keyword, qui donc sont peut-être utiles (donc l'attribut fort explicitement appelé « String » de l'élément keyword ferait référence à une liste définie ailleurs dans le fichier. Contrairement à l'attribut « String » de l'élément RegExp, qui se contente de contenir la regexp... hum).

Ceci dit, autant pour les mots-clefs et les instructions je vois l'intérêt de tout lister séparément, autant pour les registres c'est un peu débile, la regexp qui les matche tous et rien qu'eux n'étant pas bien compliquée.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

47

registres : d0-d7/a0-a7/sp/fp/usp/ssp/ccr/sr
Pas compliqué, mais c'est listable. A voir niveau optimisation, ils parle de ce qui est le plus rapide dans l'aide (mais je sais plus ce que c'est)

48

[ad][0-7]|[us]?sp|fp|ccr|sr (par exemple), mais ok il y en a plus que je ne croyais. Ça reste légèrement plus concis que 22 lignes de <item></item> grin
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

49

C'est quoi la syntaxe pour les commentaires en xml svp ?

50

<!-- commentaire ici -->

51

<!-- commentaire -->
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

52

trop lent embarrassed

53

mourn
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

54

Merci ! (ils ont choisi simple comme symbole tritop)

55

Sally (./44) :
Je dirais d'après ce que tu me dis que tout le contexte Normal pourrait être rebaptisé Label

Ouep, le "Normal Text" ne correspond à rien du tout...

56

Pour info :
\w Correspond à n'importe quel « caractère mot » —  dans ce cas, une lettre ou un chiffre quelconque. Notez que le soulignement (_) n'est pas concordant comme c'est le cas avec les expressions rationnelles Perl. Égal à [a-zA-Z0-9].

57

Oui mais non, ça c'est s'il n'est pas entre crochets. A priori si tu veux n'importe quel alphanumérique ou bien un underscore, c'est _|\w qu'il faut taper et non [_\w]. Enfin peut-être que ce dernier fait la même chose, mais c'est un peu bizarre...
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

58

<ps string="Merci pour ton aide !" />

59

Je comprends pas le "carret" : '^'
Je croyais que ça signifiait "en début de ligne" ou "premier caractère de la chaine sur laquelle on bosse". Apparemment pas ?
Il est bien sûr possible de créer une classe « négative » correspondant à « tout sauf ». Pour placer un caractère (^) au début de la classe : [^abc]correspondra à n'importe quel caractère sauf à « a » ,« b » ou « c ».

confus

60

^ a une signification qui dépend du contxte : c'est une négation quand il est utilisé dans les classes

[^a] <=> tout sauf a
^a <=> a en début de ligne