<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: поиск и замена текста в определенных рамках]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=9238</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=9238&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: поиск и замена текста в определенных рамках».]]></description>
		<lastBuildDate>Sun, 09 Feb 2014 16:15:49 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: поиск и замена текста в определенных рамках]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=79951#p79951</link>
			<description><![CDATA[<p>Спасибо. Разобрался сам.</p><p>Для написания подключил еще StringReplace и RegExReplace</p><p>С помощью RegExReplace и присвоенной переменной для ключевого слова из клипборда (Var) нашел нужную мне группу,<br />потом присвоив переменную для замены (Var2) и выполнив StringReplace заменил &lt;/m&gt; на нужное значение.<br />Чтобы записать все в исходный файл тоже использовал StringReplace, где новая группа заменяла старую.<br />Вот код: <br /></p><div class="codebox"><pre><code>
If FileContents Contains &lt;ms&gt;%clipboard%&lt;/ms&gt;
{
Fileread, Znach, d:\file.xml
Var = %clipboard%
Kluchtable:= RegExReplace(Znach, &quot;sm`aU).*(^[^\n\r]*&lt;ms&gt;&quot; Var &quot;&lt;/ms&gt;*\R.*&lt;/m&gt;)\R.*?&quot;, &quot;$1&quot;)
Var2 = &lt;t&gt;%word_replace%&lt;/t&gt;`n&lt;/m&gt;
StringReplace, Kluchtable_new, Kluchtable, &lt;/m&gt;, %Var2%, All
msgbox, %Kluchtable_new%
StringReplace, OutputVar, Znach, %Kluchtable%, %Kluchtable_new%, All
FileDelete, d:\file.xml
FileAppend, %OutputVar%, d:\file.xml
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (akman)]]></author>
			<pubDate>Sun, 09 Feb 2014 16:15:49 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=79951#p79951</guid>
		</item>
		<item>
			<title><![CDATA[AHK: поиск и замена текста в определенных рамках]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=79877#p79877</link>
			<description><![CDATA[<p>Приветствую всех! Есть проблема с написанием скрипта.<br />Суть:<br />Нужно заменить символ находящийся возможно в нескольких строках от найденного.<br />допустим есть текст<br /></p><div class="codebox"><pre><code>
&lt;m&gt;
  &lt;l&gt;ru&lt;/l&gt; 
  &lt;ms&gt;ключевое слово1&lt;/ms&gt;
    &lt;t&gt;первая группа текст1&lt;/t&gt;
    &lt;t&gt;первая группа текст2&lt;/t&gt;
 &lt;/m&gt;

 &lt;m&gt;
  &lt;l&gt;ru&lt;/l&gt; 
  &lt;ms&gt;ключевое слово2&lt;/ms&gt;
    &lt;rs&gt;вторая группа некоторый текст&lt;/rs&gt;
    &lt;t&gt;вторая группа текст 1&lt;/t&gt;
    &lt;t&gt;вторая группа текст 2&lt;/t&gt;
 &lt;/m&gt;
</code></pre></div><p>мне нужно заменить символ &lt;/m&gt; в группе в которой найдено ключевое слово, если это &quot;ключевое слово 1&quot; то в первой группе, если 2 то второй и так далее. Ключевое слово получаю из клипборда.</p><p>Вот такой код работает, но заменяет только самую первую &lt;/m&gt;<br /></p><div class="codebox"><pre><code>
FileRead, FileContents, d:\file.xml

If FileContents Contains &lt;ms&gt;%clipboard%&lt;/ms&gt;
{
SearchText = &lt;/m&gt;
ReplaceText = &lt;t&gt;%word_replace%&lt;/t&gt;`n&lt;/m&gt;
StringReplace, OutputVar, FileContents, %SearchText%, %ReplaceText%
FileDelete, d:\file.xml
FileAppend, %OutputVar%, d:\file.xml
</code></pre></div><p>Знаю что нужно копать в сторону регулярных выражений, но все что не пробовал не получается:((</p>]]></description>
			<author><![CDATA[null@example.com (akman)]]></author>
			<pubDate>Sat, 08 Feb 2014 19:27:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=79877#p79877</guid>
		</item>
	</channel>
</rss>
