Регулярные выражения SourceMod

Тема в разделе "Общие вопросы", создана пользователем GeParD, 4 ноя 2011.

  1. GeParD

    GeParD SourcePawn

    Сообщения:
    8
    Симпатии:
    10
    Все доброй ночи )

    У меня возник любопытный вопрос по поводу некоторой части работы регулярных выражений на sourcemod.

    Система:
    Counter Strike Server v34.4044
    Metamod:Source version 1.8.7
    SourceMod Version: 1.3.2

    Код:
    public OnPluginStart()
    {
    	new String:RgxPattern[] = "\\d+";
    	new String:RgxText[] = "1 2 3 4 5";
    	
    	new Handle:Rgx = IsPattern(RgxPattern,  PCRE_MULTILINE | PCRE_CASELESS);
    	new Match = MatchRegex(Rgx, RgxText);
    	
    	PrintToServer("Rgx.Match:[%i]", Match);
    
    	if(Match > 0)
    	{
    		decl String:CurrentText[64];
    		for(new i=0;i<Match;i++)
    		{
    			GetRegexSubString(Rgx, i, CurrentText, sizeof(CurrentText));
    			PrintToServer("Rgx.Substring:'%s'", CurrentText);
    		}
    	}
    	CloseHandle(Rgx);
    }
    
    Handle:IsPattern(const String:Pattern[], Flag=0)
    {
    	new Handle:Regular;
    	decl String:RgxError[64];
    	
    	Regular = CompileRegex(Pattern, Flag, RgxError, sizeof(RgxError));
    	if (Regular != INVALID_HANDLE)
    		return Regular;
    	
    	LogError("nProtect.ChatFilter: Error Pattern:%s", RgxError);
    	return INVALID_HANDLE;
    }
    
    
    Теперь суть вопроса...
    Есть 2 флага
    MULTILINE и SINGLE

    Single - удобно для поиска совпадений выражения в текста.

    Multiline - удобно для обработки текста. (поиск совпадений и выполнения тех или иных действий с найденным текстом).

    из сути выше сложенного кода
    результат должен быть

    хотя на самом деле выходит почему то только

    Теперь паралель, которую я никак не могу объяснить для себя.

    Результат:

    или
    Возникает вопрос... что я делаю не так ?)....

    P.s Так же пробовал ставить более рании версии метамода
    более рании и позднии версии сурсмода.
    сути дело не меняет

    Добавлено через 1 час 12 минут
    Я нашел альтернативное решение данного вопроса, но если честно оно меня не устраивает.

    Результат:

     
    Последнее редактирование: 4 ноя 2011