<?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=11486&amp;type=atom" />
	<updated>2016-04-27T20:19:00Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11486</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103148#p103148" />
			<content type="html"><![CDATA[<p>Выяснил, что старый код — для ANSI и попробовал перекодировать как <a href="http://forum.script-coding.com/viewtopic.php?pid=35906#p35906">у <strong>teadrinker</strong>&#039;а</a>. Ведь что-то не так делаю? —<br /></p><div class="codebox"><pre><code>
HTM = 
(
&amp;#167; § параграф 
&amp;#169; © знак охраны авторского права (copyright) 
&amp;#174; ® символ зарегистрированного товарного знака 
&amp;#153; ™ символ товарного знака 
&amp;#176; ° знак градуса 
&amp;laquo; « левая кавычка (левая ёлочка) 
&amp;raquo; » правая кавычка (правая ёлочка) 
&amp;#133; … многоточие 
&amp;#146; ’ апостроф 
&amp;#132; „ открывающая лапка 
&amp;#147; “ закрывающая лапка 
&amp;#147; “ открывающая английская лапка 
&amp;#148; ” закрывающая английская лапка 
&amp;#149; • жирная точка 
&amp;#150; – короткое тире (см. одноименный § 158) 
&amp;minus; − минус 
&amp;#177; ± плюс-минус 
&amp;#151; — тире 
&amp;#8470; № знак номера 
)

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      t := UnHTM(UnSlashUnicode(HTM))
      ; split long line to smaller lines about 40-50 symbols length
      ;t := RegExReplace(t,&quot;.{40,50}(\s)&quot;,&quot;$0`n&quot;)

MsgBox, % t
;MsgBox, % ComUnHTML( HTM )
;MsgBox, % UnHTM( HTM )

ComUnHTML(html) {
	oHTML := ComObjCreate(&quot;HtmlFile&quot;)
	oHTML.write(html)
	return oHTML.documentElement.innerText
}

UnHTM( HTM ) { ; Remove HTML formatting / Convert to ordinary text     by SKAN 19-Nov-2009
   Static HT     ; Forum Topic: www.autohotkey.com/forum/topic51342.html
   IfEqual,HT,,   SetEnv,HT, % &quot;&amp;aacuteá&amp;acircâ&amp;acute´&amp;aeligæ&amp;agraveà&amp;amp&amp;aringå&amp;atildeã&amp;au&quot;
 . &quot;mlä&amp;bdquo„&amp;brvbar¦&amp;bull•&amp;ccedilç&amp;cedil¸&amp;cent¢&amp;circˆ&amp;copy©&amp;curren¤&amp;dagger†&amp;dagger‡&amp;deg&quot;
 . &quot;°&amp;divide÷&amp;eacuteé&amp;ecircê&amp;egraveè&amp;ethð&amp;eumlë&amp;euro€&amp;fnofƒ&amp;frac12½&amp;frac14¼&amp;frac34¾&amp;gt&gt;&amp;h&quot;
 . &quot;ellip…&amp;iacuteí&amp;icircî&amp;iexcl¡&amp;igraveì&amp;iquest¿&amp;iumlï&amp;laquo«&amp;ldquo“&amp;lsaquo‹&amp;lsquo‘&amp;lt&lt;&amp;m&quot;
 . &quot;acr¯&amp;mdash—&amp;microµ&amp;middot·&amp;nbsp &amp;ndash–&amp;not¬&amp;ntildeñ&amp;oacuteó&amp;ocircô&amp;oeligœ&amp;ograveò&amp;or&quot;
 . &quot;dfª&amp;ordmº&amp;oslashø&amp;otildeõ&amp;oumlö&amp;para¶&amp;permil‰&amp;plusmn±&amp;pound£&amp;quot&quot;&quot;&amp;raquo»&amp;rdquo”&amp;reg&quot;
 . &quot;®&amp;rsaquo›&amp;rsquo’&amp;sbquo‚&amp;scaronš&amp;sect§&amp;shy&amp;sup1¹&amp;sup2²&amp;sup3³&amp;szligß&amp;thornþ&amp;tilde˜&amp;tim&quot;
 . &quot;es×&amp;trade™&amp;uacuteú&amp;ucircû&amp;ugraveù&amp;uml¨&amp;uumlü&amp;yacuteý&amp;yen¥&amp;yumlÿ&quot;
   ;HTM := RegExReplace( HTM,&quot;&amp;amp;(\w+;)&quot;, &quot;&amp;$1&quot; )   ;!! для обработки &amp;amp;lt;
   ;HTM := RegExReplace( HTM,&quot;&amp;amp;(#\d+;)&quot;, &quot;&amp;$1&quot; )  ;!! для обработки &amp;amp;#60;
   TXT := RegExReplace( HTM,&quot;&lt;[^&gt;]+&gt;&quot;, &quot; &quot; )               ; Remove all tags between  &quot;&lt;&quot; and &quot;&gt;&quot;
   Loop, Parse, TXT, &amp;`;                              ; Create a list of special characters
      L := &quot;&amp;&quot; A_LoopField &quot;;&quot;, R .= (!(A_Index&amp;1)) ? ( (!InStr(R,L,1)) ? L:&quot;&quot; ) : &quot;&quot;
   StringTrimRight, R, R, 1
   Loop, Parse, R , `;                                ; Parse Special Characters
      If F := InStr( HT, A_LoopField )                  ; Lookup HT Data
         StringReplace, TXT,TXT, %A_LoopField%`;, % SubStr( HT,F+StrLen(A_LoopField), 1 ), All
   Else If ( SubStr( A_LoopField,2,1)=&quot;#&quot; )
      StringReplace, TXT, TXT, %A_LoopField%`;, % Chr(SubStr(A_LoopField,3)), All
   ;TXT := RegExReplace(TXT, &quot; +&quot;, &quot; &quot;)  ;!! множественные пробелы на один
   Return RegExReplace( TXT, &quot;(^\s*|\s*$)&quot;)            ; Remove leading/trailing white spaces
}

;---------------------------------------
; Convert strings
;---------------------------------------

/*
CP_ACP   = 0
CP_OEMCP = 1
CP_MACCP = 2
CP_UTF7  = 65000
CP_UTF8  = 65001
*/

Ansi2Oem(sString)
{
   Ansi2Unicode(sString, wString, 0)
   Unicode2Ansi(wString, zString, 1)
   Return zString
}

Oem2Ansi(zString)
{
   Ansi2Unicode(zString, wString, 1)
   Unicode2Ansi(wString, sString, 0)
   Return sString
}

Ansi2UTF8(sString)
{
   Ansi2Unicode(sString, wString, 0)
   Unicode2Ansi(wString, zString, 65001)
   Return zString
}

UTF82Ansi(zString)
{
   Ansi2Unicode(zString, wString, 65001)
   Unicode2Ansi(wString, sString, 0)
   Return sString
}

Ansi2Unicode(ByRef sString, ByRef wString, CP = 0)
{
     nSize := DllCall(&quot;MultiByteToWideChar&quot;
      , &quot;Uint&quot;, CP
      , &quot;Uint&quot;, 0
      , &quot;Uint&quot;, &amp;sString
      , &quot;int&quot;,  -1
      , &quot;Uint&quot;, 0
      , &quot;int&quot;,  0)

   VarSetCapacity(wString, nSize * 2)

   DllCall(&quot;MultiByteToWideChar&quot;
      , &quot;Uint&quot;, CP
      , &quot;Uint&quot;, 0
      , &quot;Uint&quot;, &amp;sString
      , &quot;int&quot;,  -1
      , &quot;Uint&quot;, &amp;wString
      , &quot;int&quot;,  nSize)
}

Unicode2Ansi(ByRef wString, ByRef sString, CP = 0)
{
     nSize := DllCall(&quot;WideCharToMultiByte&quot;
      , &quot;Uint&quot;, CP
      , &quot;Uint&quot;, 0
      , &quot;Uint&quot;, &amp;wString
      , &quot;int&quot;,  -1
      , &quot;Uint&quot;, 0
      , &quot;int&quot;,  0
      , &quot;Uint&quot;, 0
      , &quot;Uint&quot;, 0)

   VarSetCapacity(sString, nSize)

   DllCall(&quot;WideCharToMultiByte&quot;
      , &quot;Uint&quot;, CP
      , &quot;Uint&quot;, 0
      , &quot;Uint&quot;, &amp;wString
      , &quot;int&quot;,  -1
      , &quot;str&quot;,  sString
      , &quot;int&quot;,  nSize
      , &quot;Uint&quot;, 0
      , &quot;Uint&quot;, 0)
}

;-------------------------------------------------
; HTML encode/decode
;------------------------------------------------

UriEncode(str)
{ ; v 0.3 / (w) 24.06.2008 by derRaphael / zLib-Style release
   b_Format := A_FormatInteger
   data := &quot;&quot;
   SetFormat,Integer,H
   Loop,Parse,str
      if ((Asc(A_LoopField)&gt;0x7f) || (Asc(A_LoopField)&lt;0x30) || (asc(A_LoopField)=0x3d))
         data .= &quot;%&quot; . ((StrLen(c:=SubStr(ASC(A_LoopField),3))&lt;2) ? &quot;0&quot; . c : c)
      Else
         data .= A_LoopField
   SetFormat,Integer,%b_format%
   return data
}

UriDecode(str)
{ ; v 0.1 / (w) 28.06.2008 by derRaphael / zLib-Style release
   Loop,Parse,str,`%
      txt := (A_Index=1) ? A_LoopField : txt chr(&quot;0x&quot; substr(A_LoopField,1,2)) SubStr(A_LoopField,3)
   return txt
}

UnSlashUnicode(s)
{
  ; unslash unicode sequences like \u0026
  ; by Mikhail Kuropyatnikov 2009 (micdelt@mail.ru)
   rx = \\u([0-9a-fA-F]{4})
   pos = 0

   loop
   {
   pos := RegExMatch(s,rx,m,pos+1)
   if (pos = 0)
      break
   StringReplace, s, s, %m%, % Chr(&quot;0x&quot; . SubStr(m,3,4))
   }
   
   return s
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-27T20:19:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103148#p103148</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103142#p103142" />
			<content type="html"><![CDATA[<p>Ещё обнаружилась та же проблема с числовыми кодами (между СОМ-кодом и старым):<br /></p><div class="codebox"><pre><code>
HTM = 
(
&amp;#167; § параграф 
&amp;#169; © знак охраны авторского права (copyright) 
&amp;#174; ® символ зарегистрированного товарного знака 
&amp;#153; ™ символ товарного знака 
&amp;#176; ° знак градуса 
&amp;laquo; « левая кавычка (левая ёлочка) 
&amp;raquo; » правая кавычка (правая ёлочка) 
&amp;#133; … многоточие 
&amp;#146; ’ апостроф 
&amp;#132; „ открывающая лапка 
&amp;#147; “ закрывающая лапка 
&amp;#147; “ открывающая английская лапка 
&amp;#148; ” закрывающая английская лапка 
&amp;#149; • жирная точка 
&amp;#150; – короткое тире (см. одноименный § 158) 
&amp;minus; − минус 
&amp;#177; ± плюс-минус 
&amp;#151; — тире 
&amp;#8470; № знак номера 
)

MsgBox, % ComUnHTML( HTM )
MsgBox, % UnHTM( HTM )

ComUnHTML(html) {
	oHTML := ComObjCreate(&quot;HtmlFile&quot;)
	oHTML.write(html)
	return oHTML.documentElement.innerText
}

UnHTM( HTM ) { ; Remove HTML formatting / Convert to ordinary text     by SKAN 19-Nov-2009
   Static HT     ; Forum Topic: www.autohotkey.com/forum/topic51342.html
   IfEqual,HT,,   SetEnv,HT, % &quot;&amp;aacuteá&amp;acircâ&amp;acute´&amp;aeligæ&amp;agraveà&amp;amp&amp;aringå&amp;atildeã&amp;au&quot;
 . &quot;mlä&amp;bdquo„&amp;brvbar¦&amp;bull•&amp;ccedilç&amp;cedil¸&amp;cent¢&amp;circˆ&amp;copy©&amp;curren¤&amp;dagger†&amp;dagger‡&amp;deg&quot;
 . &quot;°&amp;divide÷&amp;eacuteé&amp;ecircê&amp;egraveè&amp;ethð&amp;eumlë&amp;euro€&amp;fnofƒ&amp;frac12½&amp;frac14¼&amp;frac34¾&amp;gt&gt;&amp;h&quot;
 . &quot;ellip…&amp;iacuteí&amp;icircî&amp;iexcl¡&amp;igraveì&amp;iquest¿&amp;iumlï&amp;laquo«&amp;ldquo“&amp;lsaquo‹&amp;lsquo‘&amp;lt&lt;&amp;m&quot;
 . &quot;acr¯&amp;mdash—&amp;microµ&amp;middot·&amp;nbsp &amp;ndash–&amp;not¬&amp;ntildeñ&amp;oacuteó&amp;ocircô&amp;oeligœ&amp;ograveò&amp;or&quot;
 . &quot;dfª&amp;ordmº&amp;oslashø&amp;otildeõ&amp;oumlö&amp;para¶&amp;permil‰&amp;plusmn±&amp;pound£&amp;quot&quot;&quot;&amp;raquo»&amp;rdquo”&amp;reg&quot;
 . &quot;®&amp;rsaquo›&amp;rsquo’&amp;sbquo‚&amp;scaronš&amp;sect§&amp;shy&amp;sup1¹&amp;sup2²&amp;sup3³&amp;szligß&amp;thornþ&amp;tilde˜&amp;tim&quot;
 . &quot;es×&amp;trade™&amp;uacuteú&amp;ucircû&amp;ugraveù&amp;uml¨&amp;uumlü&amp;yacuteý&amp;yen¥&amp;yumlÿ&quot;
   ;HTM := RegExReplace( HTM,&quot;&amp;amp;(\w+;)&quot;, &quot;&amp;$1&quot; )   ;!! для обработки &amp;amp;lt;
   ;HTM := RegExReplace( HTM,&quot;&amp;amp;(#\d+;)&quot;, &quot;&amp;$1&quot; )  ;!! для обработки &amp;amp;#60;
   TXT := RegExReplace( HTM,&quot;&lt;[^&gt;]+&gt;&quot;, &quot; &quot; )               ; Remove all tags between  &quot;&lt;&quot; and &quot;&gt;&quot;
   Loop, Parse, TXT, &amp;`;                              ; Create a list of special characters
      L := &quot;&amp;&quot; A_LoopField &quot;;&quot;, R .= (!(A_Index&amp;1)) ? ( (!InStr(R,L,1)) ? L:&quot;&quot; ) : &quot;&quot;
   StringTrimRight, R, R, 1
   Loop, Parse, R , `;                                ; Parse Special Characters
      If F := InStr( HT, A_LoopField )                  ; Lookup HT Data
         StringReplace, TXT,TXT, %A_LoopField%`;, % SubStr( HT,F+StrLen(A_LoopField), 1 ), All
   Else If ( SubStr( A_LoopField,2,1)=&quot;#&quot; )
      StringReplace, TXT, TXT, %A_LoopField%`;, % Chr(SubStr(A_LoopField,3)), All
   ;TXT := RegExReplace(TXT, &quot; +&quot;, &quot; &quot;)  ;!! множественные пробелы на один
   Return RegExReplace( TXT, &quot;(^\s*|\s*$)&quot;)            ; Remove leading/trailing white spaces
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-27T19:24:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103142#p103142</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102950#p102950" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong></p><p>Я в первую функцию две строки добавлял, для правки следующих частых случаев: <span style="color: red"><strong>&amp;amp;lt;</strong></span> или <span style="color: red"><strong>&amp;amp;#60;</strong></span>, — на <span style="color: green"><strong>&amp;lt;</strong></span> или <span style="color: green"><strong>&amp;#60;</strong></span>. Наверно поэтому несоответствия.</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-24T15:25:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102950#p102950</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102949#p102949" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>С этой функцией работает.</p></blockquote></div><p>Значит, я её криво скопировал, благодарю)) Отредактировал посты.</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-24T15:18:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102949#p102949</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102945#p102945" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>делает в точности то же, что и функция UnHTM().</p></blockquote></div><p>У меня другое выводит:<br /></p><div class="quotebox"><blockquote><p>à à à латинская строчная a с тупым ударением á &amp;##225; á латинская строчная a с острым ударением â &amp;##226; â латинская строчная a с диакритическим знаком ã ã ã латинская строчная a с тильдой ä ä ä латинская строчная a с двумя точками å å å латинская строчная a с верхним кружком Advertising&nbsp; ! £ Progr&lt;ams&gt; ИмяКодВидОписание</p><p>&amp;quot;&amp;#34;&quot;двойная кавычка </p><p>&amp;amp;&amp;#38;&amp;амперсанд </p><p>&amp;lt;&amp;#60;&lt;знак &#039;меньше&#039; </p><p>&amp;gt;&amp;#62;&gt;знак &#039;больше&#039; </p><p>&amp;nbsp;&amp;#160; неразрывный пробел</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-24T14:55:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102945#p102945</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102944#p102944" />
			<content type="html"><![CDATA[<p>С этой функцией работает.<br /></p><div class="codebox"><pre><code>UnHTM( HTM ) { ; Remove HTML formatting / Convert to ordinary text     by SKAN 19-Nov-2009
 Static HT     ; Forum Topic: www.autohotkey.com/forum/topic51342.html
 IfEqual,HT,,   SetEnv,HT, % &quot;&amp;aacuteá&amp;acircâ&amp;acute´&amp;aeligæ&amp;agraveà&amp;amp&amp;aringå&amp;atildeã&amp;au&quot;
 . &quot;mlä&amp;bdquo„&amp;brvbar¦&amp;bull•&amp;ccedilç&amp;cedil¸&amp;cent¢&amp;circˆ&amp;copy©&amp;curren¤&amp;dagger†&amp;dagger‡&amp;deg&quot;
 . &quot;°&amp;divide÷&amp;eacuteé&amp;ecircê&amp;egraveè&amp;ethð&amp;eumlë&amp;euro€&amp;fnofƒ&amp;frac12½&amp;frac14¼&amp;frac34¾&amp;gt&gt;&amp;h&quot;
 . &quot;ellip…&amp;iacuteí&amp;icircî&amp;iexcl¡&amp;igraveì&amp;iquest¿&amp;iumlï&amp;laquo«&amp;ldquo“&amp;lsaquo‹&amp;lsquo‘&amp;lt&lt;&amp;m&quot;
 . &quot;acr¯&amp;mdash—&amp;microµ&amp;middot·&amp;nbsp &amp;ndash–&amp;not¬&amp;ntildeñ&amp;oacuteó&amp;ocircô&amp;oeligœ&amp;ograveò&amp;or&quot;
 . &quot;dfª&amp;ordmº&amp;oslashø&amp;otildeõ&amp;oumlö&amp;para¶&amp;permil‰&amp;plusmn±&amp;pound£&amp;quot&quot;&quot;&amp;raquo»&amp;rdquo”&amp;reg&quot;
 . &quot;®&amp;rsaquo›&amp;rsquo’&amp;sbquo‚&amp;scaronš&amp;sect§&amp;shy&amp;sup1¹&amp;sup2²&amp;sup3³&amp;szligß&amp;thornþ&amp;tilde˜&amp;tim&quot;
 . &quot;es×&amp;trade™&amp;uacuteú&amp;ucircû&amp;ugraveù&amp;uml¨&amp;uumlü&amp;yacuteý&amp;yen¥&amp;yumlÿ&quot;
 TXT := RegExReplace( HTM,&quot;&lt;[^&gt;]+&gt;&quot; )               ; Remove all tags between  &quot;&lt;&quot; and &quot;&gt;&quot;
 Loop, Parse, TXT, &amp;`;                              ; Create a list of special characters
   L := &quot;&amp;&quot; A_LoopField &quot;;&quot;, R .= (!(A_Index&amp;1)) ? ( (!InStr(R,L,1)) ? L:&quot;&quot; ) : &quot;&quot;
 StringTrimRight, R, R, 1
 Loop, Parse, R , `;                                ; Parse Special Characters
  If F := InStr( HT, A_LoopField )                  ; Lookup HT Data
    StringReplace, TXT,TXT, %A_LoopField%`;, % SubStr( HT,F+StrLen(A_LoopField), 1 ), All
  Else If ( SubStr( A_LoopField,2,1)=&quot;#&quot; )
    StringReplace, TXT, TXT, %A_LoopField%`;, % Chr(SubStr(A_LoopField,3)), All
Return RegExReplace( TXT, &quot;(^\s*|\s*$)&quot;)            ; Remove leading/trailing white spaces
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2016-04-24T14:54:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102944#p102944</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102943#p102943" />
			<content type="html"><![CDATA[<p>Всё-таки, остановлюсь на первом — из-за настраиваемости обработки. Но возник вопрос: почему COM-код верно выводит символ <span style="color: blue"><strong>&amp;pound;</strong></span>, а старый код — нет?<br /></p><div class="codebox"><pre><code>
HTM = &lt;a href=&quot;/intl/en/ads/&quot;&gt;Advertising - &amp;pound; Progr&amp;lt;ams&amp;gt;&lt;/a&gt;

MsgBox, % ComUnHTML( HTM )
MsgBox, % UnHTM( HTM )

ComUnHTML(html) {
	oHTML := ComObjCreate(&quot;HtmlFile&quot;)
	oHTML.write(html)
	return oHTML.documentElement.innerText
}

UnHTM( HTM ) { ; Remove HTML formatting / Convert to ordinary text     by SKAN 19-Nov-2009
   Static HT     ; Forum Topic: www.autohotkey.com/forum/topic51342.html
   IfEqual,HT,,   SetEnv,HT, % &quot;&amp;aacuteá&amp;acircâ&amp;acute´&amp;aeligæ&amp;agraveà&amp;amp&amp;aringå&amp;atildeã&amp;au&quot;
 . &quot;mlä&amp;bdquo„&amp;brvbar¦&amp;bull•&amp;ccedilç&amp;cedil¸&amp;cent¢&amp;circˆ&amp;copy©&amp;curren¤&amp;dagger†&amp;dagger‡&amp;deg&quot;
 . &quot;°&amp;divide÷&amp;eacuteé&amp;ecircê&amp;egraveè&amp;ethð&amp;eumlë&amp;euro€&amp;fnofƒ&amp;frac12½&amp;frac14¼&amp;frac34¾&amp;gt&gt;&amp;h&quot;
 . &quot;ellip…&amp;iacuteí&amp;icircî&amp;iexcl¡&amp;igraveì&amp;iquest¿&amp;iumlï&amp;laquo«&amp;ldquo“&amp;lsaquo‹&amp;lsquo‘&amp;lt&lt;&amp;m&quot;
 . &quot;acr¯&amp;mdash—&amp;microµ&amp;middot·&amp;nbsp &amp;ndash–&amp;not¬&amp;ntildeñ&amp;oacuteó&amp;ocircô&amp;oeligœ&amp;ograveò&amp;or&quot;
 . &quot;dfª&amp;ordmº&amp;oslashø&amp;otildeõ&amp;oumlö&amp;para¶&amp;permil‰&amp;plusmn±&amp;pound£&amp;quot&quot;&quot;&amp;raquo»&amp;rdquo”&amp;reg&quot;
 . &quot;®&amp;rsaquo›&amp;rsquo’&amp;sbquo‚&amp;scaronš&amp;sect§&amp;shy&amp;sup1¹&amp;sup2²&amp;sup3³&amp;szligß&amp;thornþ&amp;tilde˜&amp;tim&quot;
 . &quot;es×&amp;trade™&amp;uacuteú&amp;ucircû&amp;ugraveù&amp;uml¨&amp;uumlü&amp;yacuteý&amp;yen¥&amp;yumlÿ&quot;

   HTM := RegExReplace( HTM,&quot;&amp;amp;(\w+;)&quot;, &quot;&amp;$1&quot; )   ;!! для обработки &amp;amp;lt;
   HTM := RegExReplace( HTM,&quot;&amp;amp;(#\d+;)&quot;, &quot;&amp;$1&quot; )  ;!! для обработки &amp;amp;#60;
   TXT := RegExReplace( HTM,&quot;&lt;[^&gt;]+&gt;&quot;, &quot; &quot; )               ; Remove all tags between  &quot;&lt;&quot; and &quot;&gt;&quot;
   Loop, Parse, TXT, &amp;`;                              ; Create a list of special characters
      L := &quot;&amp;&quot; A_LoopField &quot;;&quot;, R .= (!(A_Index&amp;1)) ? ( (!InStr(R,L,1)) ? L:&quot;&quot; ) : &quot;&quot;
   StringTrimRight, R, R, 1
   Loop, Parse, R , `;                                ; Parse Special Characters
      If F := InStr( HT, A_LoopField )                  ; Lookup HT Data
         StringReplace, TXT,TXT, %A_LoopField%`;, % SubStr( HT,F+StrLen(A_LoopField), 1 ), All
   Else If ( SubStr( A_LoopField,2,1)=&quot;#&quot; )
      StringReplace, TXT, TXT, %A_LoopField%`;, % Chr(SubStr(A_LoopField,3)), All

   TXT := RegExReplace(TXT, &quot; +&quot;, &quot; &quot;)  ;!! множественные пробелы на один

   Return RegExReplace( TXT, &quot;(^\s*|\s*$)&quot;)            ; Remove leading/trailing white spaces
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-24T14:34:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102943#p102943</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102942#p102942" />
			<content type="html"><![CDATA[<p>Спасибо! Тут по ходу выяснилось, что следующий пример делает в точности то же, что и функция <strong>UnHTM()</strong>. Так понимаю, это стало возможно после поддержки COM и прежний вариант неактуален? Является ли этот последний надёжным в отношении всех версий Windows?<br /></p><div class="codebox"><pre><code>
HTM = 
(
&lt;a href=&quot;/intl/en/ads/&quot;&gt;Advertising            Programs&lt;/a&gt;
&amp;agrave; &amp;#224; à латинская строчная a с тупым ударением  
&amp;aacute; &amp;##225; á латинская строчная a с острым ударением  
&amp;acirc; &amp;##226; â латинская строчная a с диакритическим знаком  
&amp;atilde; &amp;#227; ã латинская строчная a с тильдой  
&amp;auml; &amp;#228; ä латинская строчная a с двумя точками  
&amp;aring; &amp;#229; å латинская строчная a с верхним кружком  

&lt;a href=&quot;/intl/en/ads/&quot;&gt;Advertising   &lt;span style=&#039;font-size:10.0pt;font-family:&quot;Arial Unicode MS&quot;&#039;&gt;&amp;nbsp;!    &amp;pound; &lt;/span&gt;Progr&amp;lt;ams&amp;gt;&lt;/a&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Имя&lt;/TH&gt;&lt;TH&gt;Код&lt;/TH&gt;&lt;TH&gt;Вид&lt;/TH&gt;&lt;TH&gt;Описание&lt;/TH&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;amp;quot;&lt;TD&gt;&amp;amp;#34;&lt;TD&gt;&amp;quot;&lt;TD&gt;двойная кавычка
&lt;TR&gt;
&lt;TD&gt;&amp;amp;amp;&lt;TD&gt;&amp;amp;#38;&lt;TD&gt;&amp;amp;&lt;TD&gt;амперсанд
&lt;TR&gt;
&lt;TD&gt;&amp;amp;lt;&lt;TD&gt;&amp;amp;#60;&lt;TD&gt;&amp;lt;&lt;TD&gt;знак &#039;меньше&#039;
&lt;TR&gt;
&lt;TD&gt;&amp;amp;gt;&lt;TD&gt;&amp;amp;#62;&lt;TD&gt;&amp;gt;&lt;TD&gt;знак &#039;больше&#039;
&lt;TR&gt;
&lt;TD&gt;&amp;amp;nbsp;&lt;TD&gt;&amp;amp;#160;&lt;TD&gt;&amp;nbsp;&lt;TD&gt;неразрывный пробел
)

MsgBox, % ComUnHTML( HTM )

ComUnHTML(html) {
	oHTML := ComObjCreate(&quot;HtmlFile&quot;)
	oHTML.write(html)
	return oHTML.documentElement.innerText
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-24T14:22:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102942#p102942</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102939#p102939" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>;HTM := RegExReplace(HTM, &quot;\s+&quot;, &quot;\s&quot;)</code></pre></div><p>на<br /></p><div class="codebox"><pre><code>TXT := RegExReplace(TXT, &quot; +&quot;, &quot; &quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-24T13:11:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102939#p102939</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102936#p102936" />
			<content type="html"><![CDATA[<p>Как в функции <strong>UnHTM()</strong> можно задействовать замену множественных пробелов — одним? —</p><br /><div class="codebox"><pre><code>UnHTM( HTM ) { ; Remove HTML formatting / Convert to ordinary text     by SKAN 19-Nov-2009
 Static HT     ; Forum Topic: www.autohotkey.com/forum/topic51342.html
 IfEqual,HT,,   SetEnv,HT, % &quot;&amp;aacuteá&amp;acircâ&amp;acute´&amp;aeligæ&amp;agraveà&amp;amp&amp;aringå&amp;atildeã&amp;au&quot;
 . &quot;mlä&amp;bdquo„&amp;brvbar¦&amp;bull•&amp;ccedilç&amp;cedil¸&amp;cent¢&amp;circˆ&amp;copy©&amp;curren¤&amp;dagger†&amp;dagger‡&amp;deg&quot;
 . &quot;°&amp;divide÷&amp;eacuteé&amp;ecircê&amp;egraveè&amp;ethð&amp;eumlë&amp;euro€&amp;fnofƒ&amp;frac12½&amp;frac14¼&amp;frac34¾&amp;gt&gt;&amp;h&quot;
 . &quot;ellip…&amp;iacuteí&amp;icircî&amp;iexcl¡&amp;igraveì&amp;iquest¿&amp;iumlï&amp;laquo«&amp;ldquo“&amp;lsaquo‹&amp;lsquo‘&amp;lt&lt;&amp;m&quot;
 . &quot;acr¯&amp;mdash—&amp;microµ&amp;middot·&amp;nbsp &amp;ndash–&amp;not¬&amp;ntildeñ&amp;oacuteó&amp;ocircô&amp;oeligœ&amp;ograveò&amp;or&quot;
 . &quot;dfª&amp;ordmº&amp;oslashø&amp;otildeõ&amp;oumlö&amp;para¶&amp;permil‰&amp;plusmn±&amp;pound£&amp;quot&quot;&quot;&amp;raquo»&amp;rdquo”&amp;reg&quot;
 . &quot;®&amp;rsaquo›&amp;rsquo’&amp;sbquo‚&amp;scaronš&amp;sect§&amp;shy&amp;sup1¹&amp;sup2²&amp;sup3³&amp;szligß&amp;thornþ&amp;tilde˜&amp;tim&quot;
 . &quot;es×&amp;trade™&amp;uacuteú&amp;ucircû&amp;ugraveù&amp;uml¨&amp;uumlü&amp;yacuteý&amp;yen¥&amp;yumlÿ&quot;

 HTM := RegExReplace( HTM,&quot;&amp;amp;(\w+;)&quot;, &quot;&amp;$1&quot; )   ; для обработки &amp;amp;lt;
 HTM := RegExReplace( HTM,&quot;&amp;amp;(#\d+;)&quot;, &quot;&amp;$1&quot; )  ; для обработки &amp;amp;#60;
 TXT := RegExReplace( HTM,&quot;&lt;[^&gt;]+&gt;&quot;, &quot; &quot; )               ; Remove all tags between  &quot;&lt;&quot; and &quot;&gt;&quot;
 Loop, Parse, TXT, &amp;`;                              ; Create a list of special characters
   L := &quot;&amp;&quot; A_LoopField &quot;;&quot;, R .= (!(A_Index&amp;1)) ? ( (!InStr(R,L,1)) ? L:&quot;&quot; ) : &quot;&quot;
 StringTrimRight, R, R, 1
 Loop, Parse, R , `;                                ; Parse Special Characters
  If F := InStr( HT, A_LoopField )                  ; Lookup HT Data
    StringReplace, TXT,TXT, %A_LoopField%`;, % SubStr( HT,F+StrLen(A_LoopField), 1 ), All
  Else If ( SubStr( A_LoopField,2,1)=&quot;#&quot; )
    StringReplace, TXT, TXT, %A_LoopField%`;, % Chr(SubStr(A_LoopField,3)), All

;HTM := RegExReplace(HTM, &quot;\s+&quot;, &quot;\s&quot;)

Return RegExReplace( TXT, &quot;(^\s*|\s*$)&quot;)            ; Remove leading/trailing white spaces
}


; Example:
HTM = 
(
&amp;agrave; &amp;#224; à латинская строчная a с тупым ударением  
&amp;aacute; &amp;##225; á латинская строчная a с острым ударением  
&amp;acirc; &amp;##226; â латинская строчная a с диакритическим знаком  
&amp;atilde; &amp;#227; ã латинская строчная a с тильдой  
&amp;auml; &amp;#228; ä латинская строчная a с двумя точками  
&amp;aring; &amp;#229; å латинская строчная a с верхним кружком  

&lt;a href=&quot;/intl/en/ads/&quot;&gt;Advertising   &lt;span style=&#039;font-size:10.0pt;font-family:&quot;Arial Unicode MS&quot;&#039;&gt;&amp;nbsp;!    &amp;pound; &lt;/span&gt;Progr&amp;lt;ams&amp;gt;&lt;/a&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Имя&lt;/TH&gt;&lt;TH&gt;Код&lt;/TH&gt;&lt;TH&gt;Вид&lt;/TH&gt;&lt;TH&gt;Описание&lt;/TH&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;amp;quot;&lt;TD&gt;&amp;amp;#34;&lt;TD&gt;&amp;quot;&lt;TD&gt;двойная кавычка
&lt;TR&gt;
&lt;TD&gt;&amp;amp;amp;&lt;TD&gt;&amp;amp;#38;&lt;TD&gt;&amp;amp;&lt;TD&gt;амперсанд
&lt;TR&gt;
&lt;TD&gt;&amp;amp;lt;&lt;TD&gt;&amp;amp;#60;&lt;TD&gt;&amp;lt;&lt;TD&gt;знак &#039;меньше&#039;
&lt;TR&gt;
&lt;TD&gt;&amp;amp;gt;&lt;TD&gt;&amp;amp;#62;&lt;TD&gt;&amp;gt;&lt;TD&gt;знак &#039;больше&#039;
&lt;TR&gt;
&lt;TD&gt;&amp;amp;nbsp;&lt;TD&gt;&amp;amp;#160;&lt;TD&gt;&amp;nbsp;&lt;TD&gt;неразрывный пробел
)
MsgBox, % UnHTM( HTM )
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2016-04-24T12:28:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102936#p102936</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102463#p102463" />
			<content type="html"><![CDATA[<p>Спасибо, сначала тоже попробовал через RegExMatch, но не указал начало строки.</p>]]></content>
			<author>
				<name><![CDATA[exobangs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32958</uri>
			</author>
			<updated>2016-04-09T19:42:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102463#p102463</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102427#p102427" />
			<content type="html"><![CDATA[<p>См. <a href="http://forum.script-coding.com/viewtopic.php?id=11308">здесь</a>.<br /></p><div class="codebox"><pre><code>out := &quot;xyz;zyx;yxz&quot;
RegExMatch(out, &quot;^(.*);(.*);(.*)&quot;, match)
MsgBox % match1 &quot;`n&quot; match2 &quot;`n&quot; match3</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-04-09T13:17:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102427#p102427</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Регулярные выражения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102420#p102420" />
			<content type="html"><![CDATA[<p>Всем здравствуйте, решил разобрать данные из переменные при помощи регулярок.<br /></p><div class="codebox"><pre><code>
out := &quot;xyz;zyx;yxz&quot;
Value := RegExReplace(out, &quot;(.*);&quot;)
Value2 := RegExReplace(out, &quot;&quot;)  ; С этой строкой проблемы.
Value3 := RegExReplace(out, &quot;;(.*)&quot;)
MsgBox, % Value &quot;`n&quot; Value2 &quot;`n&quot; Value3
</code></pre></div><p>В общем то не могу вытащить текст из середины. Может кто поможет :-)</p>]]></content>
			<author>
				<name><![CDATA[exobangs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32958</uri>
			</author>
			<updated>2016-04-09T11:29:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102420#p102420</id>
		</entry>
</feed>
