<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: поиск и замена текста в определенных рамках]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=9238&amp;type=atom" />
	<updated>2014-02-09T16:15:49Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=9238</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: поиск и замена текста в определенных рамках]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79951#p79951" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[akman]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31754</uri>
			</author>
			<updated>2014-02-09T16:15:49Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79951#p79951</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: поиск и замена текста в определенных рамках]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79877#p79877" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[akman]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31754</uri>
			</author>
			<updated>2014-02-08T19:27:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79877#p79877</id>
		</entry>
</feed>
