In Perl, können wir dieseWie implementiert man/e Modifikator mit PCRE2?
s/pattern/func($1)/e
tun Gibt es eine praktische Funktion, die gleiche Sache mit PCRE2 tut, wie
::pcre2_substitute_with_callback(
re, // the compiled pattern
pcuSubject, ccuSubject, // the subject and its length
PCRE2_SUBSTITUTE_GLOBAL, // the substitute options
matches,
NULL, // the match context
[](PCRE2_SPTR pcuMatched)->PCRE2_SPTR{ // the callback
return "replacement";
},
pcuResult, &ccuResult
);
Dank.
Ich denke, die schnelle Antwort ist "Nein, es gibt keine solche bequeme Funktion in PCRE2". Ich habe gerade überprüft, wie JPCRE2 jp :: RegexReplace :: nreplace() implementiert, und es verwendet pcre2_match(), was wahrscheinlich bedeutet "Jungs, Sie müssen es selbst auf die harte Art tun. Keine bequeme Funktion." Danke, dass du mir von JPCRE2 erzählt hast. Einen schönen Tag noch. – Cody
@Cody Sie haben Recht, ich musste im Voraus eine klare Aussage machen. Vielen Dank. – zdim
@Cody: 'Du musst es selbst auf die harte Tour machen', ich bin mir nicht sicher, ob ich verstehe, was du sagen willst, aber es ist so: Die 'nreplace'-Methode nimmt eine Funktion, die eine Zeichenkette mit $ zurückgibt 'ist nichts besonderes (wörtlich). Obwohl Sie sein Verhalten einfach implementieren können, z. B. anstatt "$ 0b" aus dem Callback zurückzugeben, können Sie '" a "+ m [0] +" b "' usw. zurückgeben. Und für die erweiterte Funktionalität von 'pcre2_substitute' können Sie' if..else' verwenden, das wahrscheinlich besser lesbar ist. – Jahid