J'ai la chaîne suivante dans mon entrée à jq
:Backreferences dans jq comme sed ou vi?
"\n*blah\n**tim\nbob was here\n*item1\n**item2\n"
Et je suis en mesure de faire correspondre la première \n*
ce qui suit:
[match("(\n\\*[A-Za-z0-9]*\n)";"g")]
Ce qui me donne ce qui suit résultats:
[
{
"offset": 0,
"length": 7,
"string": "\n*blah\n",
"captures": [
{
"offset": 0,
"length": 7,
"string": "\n*blah\n",
"name": null
}
]
},
{
"offset": 25,
"length": 8,
"string": "\n*item1\n",
"captures": [
{
"offset": 25,
"length": 8,
"string": "\n*item1\n",
"name": null
}
]
}
]
Mon but cependant, est de rechercher ceux-ci et d'ajouter un \n
supplémentaire au début des lignes \n*
appariées.
Je ne semble pas être en mesure de le faire en utilisant gsub des backreferences, donc est-il une fonctionnalité similaire à ce qui peut être fait dans sed
et vi
à l'aide backreference correspond à jq
?
Alors, quelle est la syntaxe officielle à ce sujet? Avez-vous besoin du '? 'et il doit être entre les parenthèses, tout comme l'expression correspond? – leeand00
Le [manuel] (https://stedolan.github.io/jq/manual/#RegularexpressionsPCRE) est un peu laconique à ce sujet et aide à lire toute la section. Le [implémentation] (https://github.com/stedolan/jq/blob/master/src/builtin.jq#L115-L153) semble dépendre de ce que [match] (https://github.com/stedolan/ jq/blob/master/src/builtin.C# L753) stocke dans '.captures' donc je ne pense pas que les backreferences soient supportées ce qui est curieux car jq utilise [oniguruma] (https://github.com/kkos/oniguruma/blob/master/doc/RE) pour faire le travail de regex et il semble les soutenir. Peut-être qu'ils sont seulement autorisés dans le modèle de recherche. – jq170727