1 (изменено: vladmany, 2018-11-25 23:50:02)

Тема: AHK: Регулярные выражения и особенности RegExMatch

Есть текст:
score_Something_min=10
На месте слова Something может быть любое другое слово. И вот мне нужно используя RegExMatch взять из этого текста только score_слово
а чтобы всё остальное проигнорировалось. Я почти смог этого добиться но остается нижнее подчеркивание после слова.

Test := RegExMatch(Test, "score_.*_")

2

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany, у нас не приветствуется использование в заголовках тем слов типа «помогите», «спасите», «хулиганы зрения лишают», и т. п. Заголовок должен чётко описывать суть вопроса.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3

Re: AHK: Регулярные выражения и особенности RegExMatch

teadrinker
Извиняюсь, я только недавно здесь зарегистрировался. Так нормально?

4

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany пишет:

AHK: Регулярные выражения и особенности RegExMatch

Ну это примерно как «Программирование и его особенности в AHK». Можно «Получить слово через RegexMatch», если вы уверены что RegexReplace() совершенно точно не годится. А вообще на будущее по регулярным выражениям уже много существующих тем, и нет особого смысла плодить новые, можно просто задать вопрос в такой теме.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

5

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany, RTFM!
В примерах по регулярным выражениям показано, как использовать позитивные запросы вперед или как сохранять подшаблоны.

6 (изменено: vladmany, 2018-11-26 02:42:41)

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev
Я конечно извиняюсь, но вы слишком часто ссылаетесь на справки. Я прошу просто помочь с конкретной задачей, а не сказать мне в 100-тый раз что этому можно научиться читая справку. Не всегда информация из справки понимается легко.

7

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany пишет:

прошу просто помочь с конкретной задачей

Вы постоянно просите написать за вас код, а для этого есть тема "Коммерческий раздел".
Если же вы хотите научиться писать на автохотки, то вначале прочитайте справку, разберите в ней примеры, а потом уже если что-то непонятно, то спрашивайте на форуме.

8

Re: AHK: Регулярные выражения и особенности RegExMatch

Перевод RegExMatch

9 (изменено: vladmany, 2018-11-26 22:14:22)

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev
В данном случае я как раз и сказал вам что мне не понятно. Я даже вам мою попытку приложил, чтобы вы ну думали что я тупо ничего не делаю, а только прошу бесплатной помощи. Я уже во многом разобрался в авто хот ки, много эксперементировал с шаблонами, но именно как решить мою задачу я не совсем понимаю, вот и обратился к вам за помощью. Хотябы банальную подсказку бы дали, типо нужно подключить там такой-то шаблон, или что-то вроде этого, а вы сразу:
Находи решение сам либо плати!

10 (изменено: vladmany, 2018-11-26 22:36:19)

Re: AHK: Регулярные выражения и особенности RegExMatch

Объясню ещё подробнее чего мне нужно добиться. Есть текст score_something_min=1
Где something это произвольное слово. Мне нужно чтобы RegExMatch дал на выходе score_something а все, что идет после этого игнорировал. На словах ничего сложного, но на практике я применял много разных функций RegExMatch и у меня не выходит добиться нужного результата. Вся сложность в том, что последнее произвольное слово заканчивается перед нижним подчеркиванием, которое мне на выходе не нужно. Есть конечно вариант после RegExMatch применить RegExReplace, и убрать им то лишнее подчеркивание, но я думаю есть решение попроще. Нужно как бы дать программе знать что произвольное слово заканчивается перед нижним подчеркиванием, но само это подчеркивание не вносить в результат поиска. Прошу, помогите мне.

11

Re: AHK: Регулярные выражения и особенности RegExMatch

Заходите:
http://www.script-coding.com/AutoHotkey/RegExMatch.html
Смотрите 3-ий пример.

12

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev
Не понимаю как нечувствительность к регистру сможет мне помочь?

13

Re: AHK: Регулярные выражения и особенности RegExMatch

Не правильно посчитал - 4-ый.

14

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev
Ну да, мне пока пальцем не ткнешь я не замечу.. Типичный я..

15

Re: AHK: Регулярные выражения и особенности RegExMatch

Допустим у меня есть шаблон:

"[^min]*"

Он запрещает чтобы в Heystack были символы m,i,n. Как сделать чтоб этот запрет действовал не на отдельные буквы, а на всё слово min?
Тоесть, чтобы буквы m,i,n по отдельности он пропускал, а слитно нет.

16

Re: AHK: Регулярные выражения и особенности RegExMatch

Запросы вперед и назад:
http://www.script-coding.com/AutoHotkey/RegEx.html

RegexMatch("maxmin","((?!min).)*", match)
msgbox % match

17

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev
В вашем примере RegExMatch просто игнорирует слово min и делает его необязательным, а мне нужно чтобы при обнаружении этого слова RegExMatch вообще не срабатывал и ничего не выдавал.

18

Re: AHK: Регулярные выражения и особенности RegExMatch

Моего примера и внимательного прочтения документации ИМХО достаточно для того, чтобы воплотить, задуманное.
Если же нет, то может кто-нибудь другой вам разжуёт.

19 (изменено: teadrinker, 2018-12-01 19:32:12)

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany пишет:

нужно чтобы при обнаружении этого слова RegExMatch вообще не срабатывал и ничего не выдавал

vladmany, вы не совсем правильно понимаете принцип работы RegEx. Он нужен не для того, чтобы определить, чего не должно быть в исходном тексте, а чтобы определить, какая часть исходного текста нам нужна. А для вашей задачи лучше использовать InStr().

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

20

Re: AHK: Регулярные выражения и особенности RegExMatch

Разжевывать не обязательно, хватило бы просто примера. Ладно, может кто другой знает как это сделать, и сможет показать это на практике(в коде). Был бы благодарен такому человеку..

21

Re: AHK: Регулярные выражения и особенности RegExMatch

RegexMatch("maxmin","^((?!min).)*$", match)
msgbox % match

Но InStr() в этом случае проще.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

22 (изменено: vladmany, 2018-12-01 21:50:26)

Re: AHK: Регулярные выражения и особенности RegExMatch

teadrinker пишет:

vladmany, вы не совсем правильно понимаете принцип работы RegEx. Он нужен не для того, чтобы определить, чего не должно быть в исходном тексте, а чтобы определить, какая часть исходного текста нам нужна. А для вашей задачи лучше использовать InStr().

Мне нужно и то и другое, то-есть проверить исходный текст, подходит ли он по шаблону, нет ли в нем того чего не нужно, и нужные части текста отправить в переменные Subpattern, если RegExMatch всё это умеет, зачем использовать ещё и InStr()?

teadrinker пишет:
RegexMatch("maxmin","^((?!min).)*$", match)
msgbox % match

Но InStr() в этом случае проще.

Что-то я не могу перед вашим шаблоном другие шаблоны написать. Вот переделайте свой пример так, чтобы по шаблону перед этим запрещением слова min обязательно было слово max. Иными словами программе нужно указать что после слова max не должно быть слова min. А в данном случае если во всем Haystack нету min то всё нормально.

23

Re: AHK: Регулярные выражения и особенности RegExMatch

А теперь построй-ка мне избу!
https://i.ytimg.com/vi/RmoVYbvA8ZM/mqdefault.jpg

24 (изменено: vladmany, 2018-12-01 21:53:58)

Re: AHK: Регулярные выражения и особенности RegExMatch

ypppu
Если бы другие шаблоны нормально писались перед и после шаблона, который запрещает min, я бы этого не просил сделать.

25

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany пишет:

Вот переделайте свой пример так, чтобы по шаблону перед этим запрещением слова min обязательно было слово max.

Легко:

RegexMatch("testmaxmin","^((?!maxmin).)*$", match)
msgbox % match
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg