<?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="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18352&amp;type=atom" />
	<updated>2025-01-14T10:44:04Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=18352</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161898#p161898" />
			<content type="html"><![CDATA[<p>Точно, AHK подсчитывает правильно, это у меня Notepad++ считает два таба как 8 символов, хоть они и состоят из табов, а не из 4-х пробелов.</p>]]></content>
			<author>
				<name><![CDATA[avens]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24487</uri>
			</author>
			<updated>2025-01-14T10:44:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161898#p161898</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161897#p161897" />
			<content type="html"><![CDATA[<p>Я вижу, что 33. Строка начинается с двух табов.<br /></p><div class="codebox"><pre><code>MsgBox % StrLen(&quot;		ths.css(&#039;width&#039;, width).text(&#039;C&quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-01-14T05:30:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161897#p161897</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161896#p161896" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, отлично. Правда есть ещё проблемка в поиске позиции в строке, я так думаю из-за некоторых спец символов в JS коде, например:<br /></p><div class="codebox"><pre><code>; Путь к файлу и строка для поиска
FilePath = %A_Desktop%\admin.js

; Открыть файл для чтения
FileRead, Haystack, %FilePath%

needle := &quot;Copied&quot;

linePos := RegExMatch(Haystack, &quot;Os)^(.*\R)?\K\V*?(\Q&quot; . needle . &quot;\E)&quot;, m)
needleCol := m.Pos(2) - linePos + 1
RegExReplace(m[1], &quot;\R&quot;,, count)
needleLine := count + 1

MsgBox % &quot;Строка: &quot;           . needleLine . &quot;`n&quot;
       . &quot;Позиция в строке: &quot; . needleCol  . &quot;`n&quot;
       . &quot;Позиция в тексте: &quot; . m.Pos(2)</code></pre></div><p>Содержимое JS файла в котором будет выполнятся поиск:<br /></p><div class="codebox"><pre><code>(function($) {
	
	// Clipboard.js
	new ClipboardJS(&#039;[data-clipboard-text]&#039;);
	$(document).on(&#039;click&#039;, &#039;[data-clipboard-text]&#039;, function(e){
		e.preventDefault();
		var ths = $(this), text = ths.text(), width = ths.width();
		ths.css(&#039;width&#039;, width).text(&#039;Copied&#039;).addClass(&#039;copied&#039;);
		setTimeout(function(){
			ths.text(text).css(&#039;width&#039;,&#039;&#039;).removeClass(&#039;copied&#039;);
		}, 5000);
		return false;
	});
	
});</code></pre></div><p>Результат, пишет что позиция в строке 33 хотя на самом деле 39.</p>]]></content>
			<author>
				<name><![CDATA[avens]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24487</uri>
			</author>
			<updated>2025-01-13T20:19:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161896#p161896</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161895#p161895" />
			<content type="html"><![CDATA[<p>Можно и лучше обойтись без SubStr и StrLen.<br /></p><div class="codebox"><pre><code>Haystack =
(
Необходимо найти номер строки и столбец, то есть начало позиции искомой фразы в текстовом файле средствами AutoHotKey.
Нюанс ещё в том что содержимое файла может быть разного наполнения, то есть это может быть код JS или PHP например в котором есть и латинские символы и русские, а также и спец символы разные и сама кодировка файлов может бить как ANSI там к UTF-8 without BOM например.
Конечный результат необходимо открыть в Notepad++
)
needle := &quot;ещё в том&quot;
linePos := RegExMatch(Haystack, &quot;Os)^(.*\R)?\K\V*?(\Q&quot; . needle . &quot;\E)&quot;, m)
needleCol := m.Pos(2) - linePos + 1
RegExReplace(m[1], &quot;\R&quot;,, count)
needleLine := count + 1

MsgBox % &quot;Строка: &quot;           . needleLine . &quot;`n&quot;
       . &quot;Позиция в строке: &quot; . needleCol  . &quot;`n&quot;
       . &quot;Позиция в тексте: &quot; . m.Pos(2)</code></pre></div><p>Если есть вероятность, что в искомом тексте может оказаться сочетание &quot;\E&quot;, то так:<br /></p><div class="codebox"><pre><code>Haystack =
(
Необходимо найти номер строки и столбец, то есть начало позиции искомой фразы в текстовом файле средствами AutoHotKey.
Нюанс ещё \E в том что содержимое файла может быть разного наполнения, то есть это может быть код JS или PHP например в котором есть и латинские символы и русские, а также и спец символы разные и сама кодировка файлов может бить как ANSI там к UTF-8 without BOM например.
Конечный результат необходимо открыть в Notepad++
)
needle := &quot;ещё \E в том&quot;
linePos := RegExMatch(Haystack, &quot;Os)^(.*\R)?\K\V*?(\Q&quot; . literalRegex(needle) . &quot;\E)&quot;, m)
needleCol := m.Pos(2) - linePos + 1
RegExReplace(m[1], &quot;\R&quot;,, count)
needleLine := count + 1

MsgBox % &quot;Строка: &quot;           . needleLine . &quot;`n&quot;
       . &quot;Позиция в строке: &quot; . needleCol  . &quot;`n&quot;
       . &quot;Позиция в тексте: &quot; . m.Pos(2)

literalRegex(str)
{
    return RegExReplace(str, &quot;\\E&quot;, &quot;\E\\E\Q&quot;)
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-01-13T15:55:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161895#p161895</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161894#p161894" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, получился такой код. Я так понимаю что используя только одно регулярное выражение RegExMatch которое сейчас в коде, позицию строки не вычислить что бы не прибегать к использованию StrLen, RegExReplace, SubStr и т.п.? Так как приветсвуется максимально короткий код, можно исключить вычисление &quot;Позиция в тексте&quot;.<br /></p><div class="codebox"><pre><code>Haystack =
(
Необходимо найти номер строки и столбец, то есть начало позиции искомой фразы в текстовом файле средствами AutoHotKey.
Нюанс ещё в том что содержимое файла может быть разного наполнения, то есть это может быть код JS или PHP например в котором есть и латинские символы и русские, а также и спец символы разные и сама кодировка файлов может бить как ANSI там к UTF-8 without BOM например.
Конечный результат необходимо открыть в Notepad++
)
needle := &quot;ещё в том&quot;
linePos := RegExMatch(Haystack, &quot;O)(?:^|\R)\K\V*?(\Q&quot; . needle . &quot;\E)&quot;, m)

if linePos {
    lineNumber := StrLen(RegExReplace(SubStr(Haystack, 1, m.Pos(1)), &quot;[^\n]&quot;)) + 1
    colNumber := m.Pos(1) - linePos + 1
    MsgBox % &quot;Строка: &quot; . lineNumber . &quot;`nПозиция в строке: &quot; . colNumber . &quot;`nПозиция в тексте: &quot; . m.Pos(1)
} else {
    MsgBox &quot;Текст не найден&quot;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[avens]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24487</uri>
			</author>
			<updated>2025-01-13T09:42:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161894#p161894</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161893#p161893" />
			<content type="html"><![CDATA[<p>Посчитайте, сколько переносов строк перед найденной позицией.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-01-12T23:18:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161893#p161893</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161892#p161892" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, надо ещё номер строки находить, для переменной %NumString% в коде:<br /></p><div class="codebox"><pre><code>Run, &quot;С:\Program Files\Notepad++\notepad++.exe&quot; -n%NumString% -c%PosColumn% &quot;%FilePath%&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[avens]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24487</uri>
			</author>
			<updated>2025-01-12T17:09:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161892#p161892</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161891#p161891" />
			<content type="html"><![CDATA[<p>Ха-ха, помню. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Но лень каждый раз это вставлять.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-01-12T08:25:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161891#p161891</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161890#p161890" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, шаблон \Q...\E &quot;опасно&quot; использовать без конвертирования строки.<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=159732#p159732">http://forum.script-coding.com/viewtopi … 32#p159732</a></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2025-01-12T05:34:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161890#p161890</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161889#p161889" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>Haystack =
(
Необходимо найти номер строки и столбец, то есть начало позиции искомой фразы в текстовом файле средствами AutoHotKey.
Нюанс ещё в том что содержимое файла может быть разного наполнения, то есть это может быть код JS или PHP например в котором есть и латинские символы и русские, а также и спец символы разные и сама кодировка файлов может бить как ANSI там к UTF-8 without BOM например.
Конечный результат необходимо открыть в Notepad++
)
needle := &quot;ещё в том&quot;
linePos := RegExMatch(Haystack, &quot;O)(?:^|\R)\K\V*?(\Q&quot; . needle . &quot;\E)&quot;, m)
MsgBox % &quot;pos: &quot; . m.Pos(1) . &quot;`n&quot;
       . &quot;col: &quot; . m.Pos(1) - linePos + 1</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-01-11T22:41:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161889#p161889</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Поиск номера строки и начала позиции искомой фразы]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=161885#p161885" />
			<content type="html"><![CDATA[<p>Необходимо найти номер строки и столбец, то есть начало позиции искомой фразы в текстовом файле средствами AutoHotKey.<br />Нюанс ещё в том что содержимое файла может быть разного наполнения, то есть это может быть код JS или PHP например в котором есть и латинские символы и русские, а также и спец символы разные и сама кодировка файлов может бить как ANSI там к UTF-8 without BOM например.</p><p>Конечный результат необходимо открыть в Notepad++<br /></p><div class="codebox"><pre><code>Run, &quot;С:\Program Files\Notepad++\notepad++.exe&quot; -n%NumString% -c%PosColumn% &quot;%FilePath%&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[avens]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24487</uri>
			</author>
			<updated>2025-01-10T20:41:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=161885#p161885</id>
		</entry>
</feed>
