Предоставление специального решения для данного вопроса на самом деле не принесет особой пользы сообществу суперпользователей, но если перейти к более общему уровню, мы увидим, что это концепция условной замены строк ceratain на основе заданного правила и массива замены.
Я собрал пару строк в JavaScript и поместил его в HTML-файл, чтобы его можно было запускать с любого рабочего стола. Это позволяет играть по разным сценариям.
<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>
Правило определено в регулярном выражении, поэтому оно предлагает больше гибкости.
Давайте просто используем в качестве примера проблему, определенную в вопросе.
Нам нужно написать правило, которое будет соответствовать подстрокам, которые необходимо заменить. Теперь пришло время заполнить поля ввода и запустить скрипт.
(?<=<<\/Contents\()[^^]*?(?=\)\/\(Date\))