Что нового

Как уменьшить длину регулярного выражение

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
Написал регулярное выражение для разделения параметров на строки (смотрите пример ниже)
Помогите уменьшить регулярное выражение (если это возможно), но чтобы оно выдавало тот же результат как и пример ниже.
Пример:
Код:
Global $sCfg = 'Key1 Key2=Value2 Key3="Value 3" Key4="""Value"" 4" Key5="""Value"" 5"'&@CRLF&'Key6 Key7=Value7'&@CRLF

Global $RegEx='([^(\s|"|=)]+(?:=(?:[^(?:\s|"|=)]+|(?:"(?:[^(\R|")]|"")+)"?))?)'

Global $aCfg = StringRegExp($sCfg, $RegEx, 3)

Display_($aCfg)

Func Display_($_vCfg)
	Local $_iWindow = GUICreate('', 400, 200)
	Local $_iEdit = GUICtrlCreateEdit('', 10, 10, 380, 180)
	If IsArray($_vCfg) Then
		Local $_iA
		For $_iA = 1 To UBound($_vCfg) -1
			$_vCfg[0] &= @CRLF& $_vCfg[$_iA]
		Next
		$_vCfg = $_vCfg[0]
	EndIf
	GUICtrlSetData($_iEdit, $_vCfg)
	GUISetState()
	While 1
		If GUIGetMsg() = -3 Then
			ExitLoop
		EndIf
	WEnd
	GUIDelete($_iWindow)
EndFunc
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Можно к примеру так:
Код:
Global $RegEx='(.+?)\s*(?=\z|Key)'

... но только какой в этом смысл?
Рег. выражение должно быть не "коротким", а "качественным" - учитывать все варианты строк для достижения гарантированного результата.
 
Автор
IMStrelcov

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
xXx сказал(а):
Можно к примеру так:
Код:
Global $RegEx='(.+?)\s*(?=\z|Key)'

... но только какой в этом смысл?
Рег. выражение должно быть не "коротким", а "качественным" - учитывать все варианты строк для достижения гарантированного результата.
Я понял, и имена Key и Value только для примера, на самом деле они могут быть разные как: Width=46 Left=76 Title="Hello Word"
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
IMStrelcov сказал(а):
А я вот не понял: вы даете пример строки, а на самом деле она другая.
Как вы думаете, есть ли у меня желание еще вам помогать?
 
Последнее редактирование:
Автор
IMStrelcov

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
Логически трудно было догадаться?
Тут и 5-и летнему должно было быть понятно что ключ может иметь разные имена и значения.
Без обид, но такой (логики) от кого либо я не ожидал. :rofl:
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
IMStrelcov сказал(а):
Логически трудно было догадаться?
Тут и 5-и летнему должно было быть понятно что ключ может иметь разные имена и значения.
Без обид, но такой (логики) от кого либо я не ожидал. :rofl:
вы поставили некорректно задачу, вам сделали по вашему запросу решение, вас оно не устроило так как вы не удосужились описать задачу полностью, а теперь хамите, утверждая что ребенок догадается, не надо так.
 
Верх