1 (изменено: Странникх, 2017-05-01 22:39:48)

Тема: AHK: RegEx получить из ini секции ключ, значение и комментирование

Ini:

[General]
Test=123 ; /test

Код:

	IniRead, OutputVar, % Path_ini, General
	Loop, Parse, % OutputVar, `n
		If RegexMatch( A_LoopField, "^\s*(?<_key>[^=]*)=(?<_value>.*);(?<_description>.*)", line )
			MsgBox, % line_key "`n"  line_value "`n" line_description

Если знак ; не встречается, то код перестает доставать шаблоны.

В Regex вообще не силен, и даже не знаю где посмотреть туториал для чайников. Справка по нему выглядит невероятно пугающее и едва понятной для новичка.

Пробовал сделать шаблон с условием новой строки или пробел (как трактуется пробел тоже не нашел в справке кстати)-

"^\s*(?<_key>[^=]*)=(?<_value>.*);|`n(?<_description>.*)"

Не помогает.

Пока проблема решена так:

		If (RegexMatch( A_LoopField, "^\s*(?<_key>[^=]*)=(?<_value>.*);(?<_description>[^;].*)", line) = 1 || RegexMatch( A_LoopField, "^\s*(?<_key>[^=]*)=(?<_value>.*)", line) = 1)
			MsgBox, % line_key "`n`n" line_value "`n`n" line_description 

2

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

Почему не хотите просто добавить в раздел  дополнительный параметр (например Comment) и считывать его стандартным способом?

3 (изменено: Странникх, 2017-05-01 22:53:38)

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

ypppu, а как если

[v1.0.90+]: Omit the Key parameter to read an entire section. Comments and empty lines are omitted. Only the first 65,533 characters of the section are retrieved.

Из команды IniRead не получить комментирование. Только сплошной линией в переменной, но и ее тогда пришлось бы разбивать через RegEx

4

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

Я имею в виду привести ini-файл к виду

[General]
Test=123
Comment = test

5

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

Не удобно, как редактировать, так и вообще обрабатывать в скрипте. Это получается к каждому ключу надо второй строчкой дописывать линию комментирования. Вы представляете какой длинный будет тогда Ini файл если в нем много ключей?

А так хоть и криво написано, но работает, зато без "мусора" в Ini.

6 (изменено: ypppu, 2017-05-01 23:28:34)

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

Кому как удобно и что называть мусором. Вы хотите нестандартную обработку Ini для частного случая.
А если будет Ini на 1000 строк, про удобство редактирования можно забыть. В скрипте обрабатывать удобнее стандартными методами.

Добавлено: А какие вообще трудности с редактированием? Каждая секция имеет своё имя. В том же Блокноте по Ctrl+F можно быстро перепрыгнуть на нужный пункт.

7 (изменено: Странникх, 2017-05-02 18:38:03)

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

ypppu, с вами можно согласиться, но я ищу ответ с RegEx.

8

Re: AHK: RegEx получить из ini секции ключ, значение и комментирование

OutputVar =
(
Test=123 ; /test
)
RegExMatch(OutputVar, "(.*);(.*)", Found)
MsgBox, %Found2%

Вообще следовало задавать вопрос в теме про RegEx.