6
votes

Utilise-t-il le modèle.LITERAL signifie la même chose que le modèle.Quelle?

Plus précisément: do xxx

et xxx

crée des regex équivalentes pour n'importe quelle chaîne s et autre drapeau x ?

sinon, comment simuler le motif.literal?


0 commentaires

3 Réponses :


0
votes

Bien que je ne voie pas de problème avec cela, je ne fais pas confiance à l'application des drapeaux de motifs arbitraires avec des trucs de motifs entiers. Le Documentation mentionne qu'il Rend tous les drapeaux mais deux superflus, après tout. Je pense ce serait bien, mais colorez-moi Méfiant - méfiance.

Avez-vous essayé d'utiliser \ q ... \ e sur ces parties du modèle que vous souhaitez citer à des non-méta-ness, pour ainsi dire?


1 commentaires

J'ai lu la documentation deux fois et il n'est pas clair. Les deux descriptions sont similaires mais pas identiques, OTOH, je ne vois aucune différence réelle. Dans la documentation de la citation, ils écrivent "comme s'il s'agissait d'un modèle littéral" et il n'y a rien de cas. Je sais \ q .. \ e, et c'est comme ça que motif.quié fonctionne réellement.



3
votes

Réponse courte: Pour votre exemple, oui.

Réponse longue: oui, mais modèle.Quelle est plus flexible. Et si vous ne vouliez que certains de votre modèle cité? Comme: xxx

avec réglage du modèle de motif.literal, même le caractère + serait désormais traité littéralement.

si Vous ne faites pas confiance à la documentation, peut-être regarder Le code source sur Google Code Search for Pattern.comPILE Aide.

de ce que je peux tirer de la recherche du code source:

  • Si le drapeau littéral est non défini, quelles que soient tous les autres drapeaux, il recherchera des blocs \ Q ... \ e cités et échappent manuellement à des caractères spéciaux, tout comme on pourrait s'attendre.

  • Si le drapeau littéral est défini, il convertira le motif entier en utilisant Newslice Méthode, et il y a des cas particuliers pour au moins le casensible indicateur et unicode_case drapeau


2 commentaires

Vous avez dit "oui", mais ne l'a donné aucune raison. Et je sais sur la flexibilité.


@maaArtinus J'étais sur le point d'écrire un exemple pour le prouver :-)



1
votes

Compte tenu de la question, la réponse est non, en raison de la définition de x = motif.literal menant à la cotation s deux fois dans la deuxième expression. Avec double citation et s = "a" la chaîne "A" ne sera pas apparié, mais la chaîne "\\ qa \\ e" sera. Cependant, xxx

semble être équivalent à xxx


0 commentaires