<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14830&amp;type=atom" />
	<updated>2019-06-16T15:57:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=14830</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134704#p134704" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Второе выражение .+ в режиме жадности захватывает максимальное количество <strong><span class="bbu">любых</span></strong> следующих символов</p></blockquote></div><p><strong>teadrinker</strong><br />Бинго! Именно так.<br />Спасибо огромное. Именно в этом месте я и лоханулся.</p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Можете рассмотреть вместо .+ использование [^s]+ (один и более символов, которые не s), либо отключение жадности для .+ с помощью знака вопроса.</p></blockquote></div><p>Именно так.</p><p>Блин. Не первый год пользуюсь регексами в Notepad++ и PowerGrep и так лохануться.<br />Как будто пелена на глаза упала.<br />Ещё раз спасибо.</p><p>Ваш ответ лучший.</p><p>------------------<br />Я тему переименовал, чтобы её название не смущало</p>]]></content>
			<author>
				<name><![CDATA[BSN201904]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40212</uri>
			</author>
			<updated>2019-06-16T15:57:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134704#p134704</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134703#p134703" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>BSN201904 пишет:</cite><blockquote><p>Я не правильно понял, как работает функция RegExMatch с модификатором O) ?</p></blockquote></div><p>Работа RegEx с опцией O ничем не отличается, только обозначения другие.</p><div class="quotebox"><cite>BSN201904 пишет:</cite><blockquote><p>Т.е. для 3-й и 4-й подстроки почему-то отключается &quot;жадный&quot; режим</p></blockquote></div><p>Нет, не отключается. Но жадный режим работает слева направо, и преимущество имеют квантификаторы, расположенные левее.<br /></p><div class="codebox"><pre><code>RegExMatch(&quot;asssdfkrlssllssss&quot;, &quot;(s+).+(s+).+(s+)&quot;)</code></pre></div><p>Первое выражение с квантификатором <strong>s+</strong>, захватывает максимальное количество первых встретившихся <strong>s</strong>, как вы и ожидали.</p><p>Второе выражение <strong>.+</strong> в режиме жадности захватывает максимальное количество <em>любых</em> следующих символов так, чтобы выражения, расположенные правее, оставались валидными. Выражение за ним — <strong>s+</strong> — означает один и более символов <strong>s</strong>. Соответственно, ему достаточно одного <strong>s</strong>, чтобы оставаться валидным. Поэтому предыдущее <strong>.+</strong> захватывает всё, кроме последнего <strong>s</strong>, которое и остаётся следующему выражению. Думаю, принцип понятен.</p><p>Можете рассмотреть вместо <strong>.+</strong> использование <strong>[^s]+</strong> (один и более символов, которые не <strong>s</strong>), либо отключение жадности для <strong>.+</strong> с помощью знака вопроса.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2019-06-16T13:33:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134703#p134703</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134697#p134697" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong><br />Может я что-то не понял в том, как работает функция RegExMatch с модификатором O) - тогда прошу пояснить.<br />Судя по хэлпу и поиску в гугле я понял, что она работает следующим образом:<br />1)Подстрока, соответсующая всему шаблону, записывается в объект номер 0 <br />2)Подстрока, соответствующая подшаблону, начинающемуся с 1-й открывающейся скобки, записывается в объект номер 1<br />3)Подстрока, соответствующая подшаблону, начинающемуся с 2-й открывающейся скобки, записывается в объект номер 2<br />...<br />и т.д.<br />И понятно почему это сделано именно так. Эти объекты - это как бы аналоги содержимого &quot;обратных ссылок&quot; ($0, $1, $2 и т.д.), с которыми манипулирует строка замены на языке REGEX.</p><p>Но почему-то пример в моём коде показал, что это работает не так.</p><p>Я не правильно понял, как работает функция RegExMatch с модификатором O) ?<br />Или у меня алгоритм не &quot;жадный&quot;?</p>]]></content>
			<author>
				<name><![CDATA[BSN201904]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40212</uri>
			</author>
			<updated>2019-06-16T04:36:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134697#p134697</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134695#p134695" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>BSN201904 пишет:</cite><blockquote><p>Т.е. для 3-й и 4-й подстроки почему-то отключается &quot;жадный&quot; режим и захватываются только первые символы подстрок</p></blockquote></div><p>Не &quot;первые&quot; символы подстрок. Весь Ваш шаблон захватывает, буквально первые три символа &quot;s&quot; затем пропускает &quot;dfkrlsslls&quot;, захватывает один символ &quot;s&quot; идущий после них, следующий пропускает и захватывает последний &quot;s&quot;. Так:<br /><strong>a<span style="color: red">sss</span>dfkrlsslls<span style="color: red">s</span>s<span style="color: red">s</span></strong></p><p>Почитайте про знак вопроса.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2019-06-15T22:51:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134695#p134695</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134694#p134694" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Это просто описка.<br />Вот исправленный код<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
F:=&quot;asssdfkrlssllssss&quot;
MsgBox F=%F%
if (RegExMatch(F, &quot;O)(s+).+(s+).+(s+)&quot;, my_object)&gt;0) {
	MsgBox % &quot; | &quot;my_object[0]&quot; | &quot;my_object[1]&quot; | &quot;my_object[2]&quot; | &quot;my_object[3]
}

F=&quot;&quot; ; Очистить память
ExitApp
</code></pre></div></div></div><p>Но он всё равно выдает не<br /></p><div class="quotebox"><blockquote><p>&quot; | sssdfkrlssllssss | sss | ss | ssss&quot;</p></blockquote></div><p>А<br /></p><div class="quotebox"><blockquote><p>&quot; | sssdfkrlssllssss | sss | s | s&quot;</p></blockquote></div><p>Т.е. для 3-й и 4-й подстроки почему-то отключается &quot;жадный&quot; режим и захватываются только первые символы подстрок</p>]]></content>
			<author>
				<name><![CDATA[BSN201904]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40212</uri>
			</author>
			<updated>2019-06-15T18:33:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134694#p134694</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134690#p134690" />
			<content type="html"><![CDATA[<p>Плохо разобрались в принципе действия квантификаторов. Какой смысл вы вкладываете в конструкцию <strong>s*+</strong> ? Чем это отличается от <strong>s*</strong> ? А чем от <strong>s+</strong> ?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2019-06-15T15:33:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134690#p134690</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134689#p134689" />
			<content type="html"><![CDATA[<p>Т.е. должно быть найдено 4 не пустые подстроки, а у меня две последние почему-то пустые.<br />Хотя режим вроде GREEDY (&quot;жадный&quot;)</p>]]></content>
			<author>
				<name><![CDATA[BSN201904]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40212</uri>
			</author>
			<updated>2019-06-15T15:22:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134689#p134689</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: v1.1.30.03 RegExMatch работает с ошибкой(решено. ошибки нет)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134688#p134688" />
			<content type="html"><![CDATA[<p>Есть код:<br /></p><div class="codebox"><pre><code>
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
F:=&quot;asssdfkrlssllssss&quot;
MsgBox F=%F%
if (RegExMatch(F, &quot;O)(s+).+(s*+).+(s*+)&quot;, my_object)&gt;0) {
	MsgBox % &quot; | &quot;my_object[0]&quot; | &quot;my_object[1]&quot; | &quot;my_object[2]&quot; | &quot;my_object[3]
}

F=&quot;&quot; ; Очистить память
ExitApp
</code></pre></div><p>Я ожидал, что результатом будет:<br />&quot; | sssdfkrlssllssss | sss | ss | ssss&quot;</p><p>А он выдаёт:<br />&quot; | sssdfkrlssllssss | sss |&nbsp; | &quot;</p><p>Это я где-то ошибся, или функция RegExMatch выполняется с ошибкой?</p>]]></content>
			<author>
				<name><![CDATA[BSN201904]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40212</uri>
			</author>
			<updated>2019-06-15T14:49:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134688#p134688</id>
		</entry>
</feed>
