parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Регулярка: сочетание \s и m

virusav 20.01.2014 16:05

Добрый день.
В парсере версии 3.4.3 в доке написано: "m - символ $ считать концом строки, но не всего текста;".
Если использовать \s ("пропуск, обычно [ \f\n\r\t]") и m, то каким-то образом предыдущая строка попадает в результат.

Ниже пример с 2-мя способами получения результата: с использованием \s и пробела.
	$sText[ text1 <tag>text2&nbsp^;</tag>
<br>
 <tag>text3&nbsp^;&nbsp^;&nbsp^;</tag>
<br>]
	$sResult[]
	$sResult1[]
	$tTemp[^sText.match[^^\s*((?!\s*<tag>).+?)?\s*<tag>\s*((?!\s*&nbsp^;).+?)\s*&nbsp^;.*^$][gim]]
	$tTemp1[^sText.match[^^\s*((?![ ]*<tag>).+?)?[ ]*<tag>\s*((?!\s*&nbsp^;).+?)\s*&nbsp^;.*^$][gim]]
	^if(def $tTemp){
		$sResult[^tTemp.menu{^if(def $tTemp.1){[$tTemp.1] }$tTemp.2}[, ]]
		$sResult1[^tTemp1.menu{^if(def $tTemp1.1){[$tTemp1.1] }$tTemp1.2}[, ]]
	}
	<pre>$sResult</pre>
	<pre>$sResult1</pre>
В итоге в первом случае, когда в условии используется \s, каким-то образом цепляется <br> из предыдущей строки.
Во втором случае все нормально.

Если так и должно быть, то где почитать про подобные случаи, когда один ключ игнорирует другой?
Заранее спасибо.