<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; jscript:Почему не работает регулярное выражение?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5988&amp;type=atom" />
	<updated>2011-07-08T06:17:01Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5988</id>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49751#p49751" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Spy00000 пишет:</cite><blockquote><p>Здесь правильнее сказать - &quot;что означает (?: ... )&quot;. Эта конструкция означает, что содержимое внутри скобок будет сгруппировано (т.е. будет рассматриваться как одно целое), но не будет запоминаться (в частности в объект RegExp).&nbsp; <br />Вот здесь написано - какие конструкции можно использовать в регулярных выражениях и для чего: <a href="http://msdn.microsoft.com/en-us/library/1400241x%28v=VS.85%29.aspx">Regular Expression Syntax (Scripting)</a></p></blockquote></div><p>Спасибо большое <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[worsvch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26044</uri>
			</author>
			<updated>2011-07-08T06:17:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49751#p49751</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49749#p49749" />
			<content type="html"><![CDATA[<p>Здесь правильнее сказать - &quot;что означает (?: ... )&quot;. Эта конструкция означает, что содержимое внутри скобок будет сгруппировано (т.е. будет рассматриваться как одно целое), но не будет запоминаться (в частности в объект RegExp).&nbsp; <br />Вот здесь написано - какие конструкции можно использовать в регулярных выражениях и для чего: <a href="http://msdn.microsoft.com/en-us/library/1400241x%28v=VS.85%29.aspx">Regular Expression Syntax (Scripting)</a></p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-07-08T05:31:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49749#p49749</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49747#p49747" />
			<content type="html"><![CDATA[<p>Всем большое спасибо, получилось наконец то<br />Один момент только непонятен в данном выражении ((?:\d+\.){3}\d+), что здесь означает &quot;?:&quot; ?</p>]]></content>
			<author>
				<name><![CDATA[worsvch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26044</uri>
			</author>
			<updated>2011-07-08T04:47:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49747#p49747</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49724#p49724" />
			<content type="html"><![CDATA[<p><strong>worsvch</strong><br />как Вам написал <strong>Rumata</strong>, для написания регулярных выражений лучше использовать конструкцию / ... / , а не new RegExp( ... ) - запись короче, слеши не надо дублировать. Вариант Вашего рег. выражения - во второй строчке. После его применения в RegExp.$1 - протокол, в RegExp.$2 и RegExp.$3 - IP-адреса, в RegExp.$4 - статус соединения.<br /></p><div class="codebox"><pre><code>//var re = new RegExp(&#039;(\\s)*TCP(\\s*)(\\d+\\.)*\\d+:\\d+(\\s+)(\\d+\\.)*\\d+:\\d+(\\s+)(\\w+)&#039;);
var re= /\s*(\S+)\s+((?:\d+\.){3}\d+):\d+\s+((?:\d+\.){3}\d+):\d+\s+(\S+)/;

var Protocol , IP1 , IP2 , State;

while (!userlisttmp.atEndOfStream) {
    line = userlisttmp.readLine();
    if( line.match( re )){
      Protocol = RegExp.$1;
      IP1 = RegExp.$2;
      IP2 = RegExp.$3;
      State = RegExp.$4;
      if( (Protocol == &#039;TCP&#039;) &amp;&amp; (IP1.substr( 0, 9) == &#039;192.168.1&#039;)){
        // тут что-то, к примеру:
        userlist.writeLine( IP1 + &#039; -&gt; &#039; + IP2 );
      }else{
        // тут что-то другое
      }
    }else{
        // тут что-то для случая, если строка не соответствует рег. выражению.
    }
/*
    if ((str = line.match(&quot;TCP&quot;,&quot;ig&quot;)) &amp;&amp; (str = line.match(&quot;192.168.1&quot;,&quot;ig&quot;))) 
    {
        if (re.exec(str)) userlist.writeLine(&quot;OK&quot;);
        else userlist.writeLine(RegExp.input + &quot; -&gt;BAD&quot;);
    }
//*/
}</code></pre></div><p>По поводу Вашей функции getFormatDate():<br />1. .getMonth() - возвращает номер месяца, начиная с НУЛЯ, т.е. 0 - январь, 6 - июль. Имейте ввиду. <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /><br />2. строчку&nbsp; &nbsp; &nbsp;<br /></p><div class="codebox"><pre><code>var day = new Date();</code></pre></div><p>лучше из начала скрипта переставить в начало функции getFormatDate(). Так будет быстрее работать и потом эту функцию будет проще переносить в другие скрипты (не надо будет искать - откуда берётся значение переменной day)</p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-07-07T12:41:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49724#p49724</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49720#p49720" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><div class="quotebox"><blockquote><p>... одни сполшные null...</p></blockquote></div><p>Нет там null. </p><p>Чтобы найти IP пишите ((?:\d+\.){3}\d+). Используйте круглые скобки по назначению -- для запоминания вхождения в строку. Не заключайте ненужные элементы в круглые скобки если они (элементы) Вам не нужны в дальнейшем.</p></blockquote></div><div class="codebox"><pre><code>var re = new RegExp(((?:\d+\.){3}\d+));</code></pre></div><p>На это выдает &quot;Синтаксическая ошибка&quot;</p>]]></content>
			<author>
				<name><![CDATA[worsvch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26044</uri>
			</author>
			<updated>2011-07-07T10:55:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49720#p49720</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49718#p49718" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>... одни сполшные null...</p></blockquote></div><p>Нет там null. </p><p>Чтобы найти IP пишите ((?:\d+\.){3}\d+). Используйте круглые скобки по назначению -- для запоминания вхождения в строку. Не заключайте ненужные элементы в круглые скобки если они (элементы) Вам не нужны в дальнейшем.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-07-07T10:02:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49718#p49718</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49717#p49717" />
			<content type="html"><![CDATA[<p>Нужно получить из строчек вида &quot;&nbsp; TCP&nbsp; &nbsp; 192.168.1.1:1000&nbsp; &nbsp; &nbsp; 192.168.1.2:2000&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LISTENING&quot; ip адрес, в данном случае 192.168.1.2<br />У меня это значение не попадет ни в одну переменную от $1 до $9</p><div class="codebox"><pre><code>var day = new Date();
var logdir = &quot;d:\\userlist&quot;;
var line, str;

var netstat = WScript.CreateObject(&quot;WScript.Shell&quot;);
var dir = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;);
var file = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;);

function getFormatDate() {
    var date, ldate;

    date = day.getDate();
    if (date &lt; 10) date = &quot;0&quot; + date;
    ldate = date + &quot;_&quot;;
    date = day.getMonth();
    if (date &lt; 10) date = &quot;0&quot; + date;
    ldate += date + &quot;_&quot;;
    date = day.getYear();
    if (date &lt; 10) date = &quot;0&quot; + date;
    ldate += date + &quot;_&quot;;
    date = day.getHours();
    if (date &lt; 10) date = &quot;0&quot; + date;
    ldate += date + &quot;_&quot;;
    date = day.getMinutes();
    if (date &lt; 10) date = &quot;0&quot; + date;
    ldate += date;

    return ldate;
}



if (!dir.folderExists(logdir)) dir.createFolder(logdir);

var today = getFormatDate();

netstat.run(&quot;%COMSPEC% /q/c netstat.exe -an &gt;&quot; + logdir + &quot;\\&quot; + today + &quot;.tmp&quot;,0,true);

// Обрабатываем полученый лог
var userlisttmp = file.OpenTextFile(logdir + &quot;\\&quot;+today + &quot;.tmp&quot;,1);
var userlist = file.OpenTextFile(logdir + &quot;\\&quot;+today,2,true);

var re = new RegExp(&#039;(\\s)*TCP(\\s*)(\\d+\\.)*\\d+:\\d+(\\s+)(\\d+\\.)*\\d+:\\d+(\\s+)(\\w+)&#039;);

while (!userlisttmp.atEndOfStream) {
    line = userlisttmp.readLine();
    if ((str = line.match(&quot;TCP&quot;,&quot;ig&quot;)) &amp;&amp; (str = line.match(&quot;192.168.1&quot;,&quot;ig&quot;))) 
    {
        if (re.exec(str)) userlist.writeLine(&quot;OK&quot;);
        else userlist.writeLine(RegExp.input + &quot; -&gt;BAD&quot;);
    }
}

userlisttmp.close();
userlist.close();

file.deleteFile(logdir + &quot;\\&quot; + today + &quot;.tmp&quot;);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[worsvch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26044</uri>
			</author>
			<updated>2011-07-07T09:59:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49717#p49717</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49716#p49716" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Все работает. Только в регулярном выражении содержится бесполезная информация:<br /></p><div class="quotebox"><blockquote><p>RegExp.$1 == &#039; &#039;<br />RegExp.$2 == &#039;&nbsp; &nbsp; &#039;<br />RegExp.$3 == &#039;1.&#039;<br />и т.д.</p></blockquote></div><p>И регулярное выражение надо правильно инициализировать. Почувствуйте разницу:<br /></p><div class="codebox"><pre><code>
re = /(\s)*TCP(\s*)(\d+\.)*\d+:\d+(\s+)(\d+\.)*\d+:\d+(\s+)(\w+)/;

re = new RegExp(&#039;(\\s)*TCP(\\s*)(\\d+\\.)*\\d+:\\d+(\\s+)(\\d+\\.)*\\d+:\\d+(\\s+)(\\w+)&#039;);</code></pre></div></blockquote></div><p>Как получить именно 192.168.2.2?<br />Попробовал <br /></p><div class="codebox"><pre><code>re = new RegExp(&#039;(\\s)*TCP(\\s*)(\\d+\\.)*\\d+:\\d+(\\s+)(\\d+\\.)*\\d+:\\d+(\\s+)(\\w+)&#039;);</code></pre></div><p>Проверил значения $1..$9 одни сполшные null вместо 192.168.2.2</p>]]></content>
			<author>
				<name><![CDATA[worsvch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26044</uri>
			</author>
			<updated>2011-07-07T09:22:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49716#p49716</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49712#p49712" />
			<content type="html"><![CDATA[<p>Все работает. Только в регулярном выражении содержится бесполезная информация:<br /></p><div class="quotebox"><blockquote><p>RegExp.$1 == &#039; &#039;<br />RegExp.$2 == &#039;&nbsp; &nbsp; &#039;<br />RegExp.$3 == &#039;1.&#039;<br />и т.д.</p></blockquote></div><p>И регулярное выражение надо правильно инициализировать. Почувствуйте разницу:<br /></p><div class="codebox"><pre><code>
re = /(\s)*TCP(\s*)(\d+\.)*\d+:\d+(\s+)(\d+\.)*\d+:\d+(\s+)(\w+)/;

re = new RegExp(&#039;(\\s)*TCP(\\s*)(\\d+\\.)*\\d+:\\d+(\\s+)(\\d+\\.)*\\d+:\\d+(\\s+)(\\w+)&#039;);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-07-07T07:54:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49712#p49712</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[jscript:Почему не работает регулярное выражение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49710#p49710" />
			<content type="html"><![CDATA[<p>Есть строка: &quot;&nbsp; TCP&nbsp; &nbsp; 192.168.1.1:1063&nbsp; &nbsp; &nbsp;192.168.2.2:1521&nbsp; &nbsp; &nbsp;ESTABLISHED&quot;<br />есть регулярное выражение: &quot;(\s)*TCP(\s*)(\d+\.)*\d+:\d+(\s+)(\d+\.)*\d+:\d+(\s+)(\w+)&quot;<br />но почему то <br /></p><div class="codebox"><pre><code>re.exec(str)</code></pre></div><p>не дает ни одного совпадения, имею ввиду:<br /></p><div class="codebox"><pre><code>WScript.Echo(RegExp.$1);
WScript.Echo(RegExp.$2);</code></pre></div><p>и т.д. выдают null<br />Можете подсказать где ошибся?</p>]]></content>
			<author>
				<name><![CDATA[worsvch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26044</uri>
			</author>
			<updated>2011-07-07T07:06:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49710#p49710</id>
		</entry>
</feed>
