Die Bereitstellung einer dedizierten Lösung für die gegebene Frage würde der Superuser-Community nicht wirklich einen Mehrwert bringen, aber wenn man auf die allgemeinere Ebene geht, kann man erkennen, dass dies ein Konzept der bedingten Ersetzung bestimmter Zeichenfolgen ist, die auf einer gegebenen Regel und einem Ersetzungsarray basieren.
Ich habe ein paar Zeilen in JavaScript zusammengestellt und in eine HTML-Datei eingefügt, damit sie von jedem Desktop aus ausgeführt werden kann. Es ermöglicht das Spiel mit verschiedenen Szenarien.
<head> <title>Conditional replacement</title> </head> <body> Input: <br> <textarea rows="15" cols="50" id="input1"> </textarea> <textarea rows="15" cols="50" id="input2"> </textarea> <br> <br> Regex rule: <input type="text" id="pattern" size="42"> <br> <br> <button type="button" onclick="myFunction()">Run and generate output</button> <br> <br> Output and errors: <br> <textarea rows="15" cols="50" id="output"></textarea> <textarea rows="15" cols="50" id="errors"></textarea> <script> function myFunction() { var i1 = document.getElementById("input1").value; var lines1 = i1.split("\n"); var i2 = document.getElementById("input2").value; var lines2 = i2.split("\n"); var rule = document.getElementById("pattern").value; var output = ""; var errors = ""; var j = 0; try { for (var i = 0; i < lines1.length; i++) { if (lines1[i].search(rule) !== -1) { var re = new RegExp(rule, "g"); if (lines2[j] === undefined) { errors += "No replacement for line match: " + lines1[i]; output += lines1[i] + "\n"; // no change } else { output += lines1[i].replace(re, lines2[j]) + "\n"; j++; } } else { output += lines1[i] + "\n"; } } } catch (err) { errors += err.message + "\n"; } document.getElementById("output").value = output; document.getElementById("errors").value = errors; } </script> </body> </html>
Die Regel ist in Regex definiert und bietet somit mehr Flexibilität.
Nehmen wir als Beispiel das in der Frage definierte Problem.
Wir müssen eine Regel schreiben, die den zu ersetzenden Teilzeichenfolgen entspricht. Nun ist es Zeit, die Eingaben zu füllen und das Skript auszuführen.
(?<=<<\/Contents\()[^^]*?(?=\)\/\(Date\))