1

Тема: AHK: Отделение числа из текста

Всем привет! Пишу скрипт и понадобился такой приём, как работа с динамическим текстом. Текст записывается в перемённую, а в тексте хранится какое-нибудь число. Как можно получить это число?

Примеры:

mytext := "Привет, мне 20 пончиков."
mytext := "Давай ровно 5."
mytext := "15 минут."

Как итог, то из первого примера нужно вытянуть число 20, из второго число 5 и из последнего число 15.

2 (изменено: Flasher, 2016-07-18 00:44:39)

Re: AHK: Отделение числа из текста

; Так:
RegexMatch(mytext, "(\d+)", match)
MsgBox % match1
; Или так:
MsgBox % RegexReplace(mytext, ".*\b(\d+).*", "$1")

3

Re: AHK: Отделение числа из текста

MsgBox % RegexReplace(mytext, "\b(\d+).*", "$1")

А для чего тут \b?
При том с кириллицей \b не работает.

4

Re: AHK: Отделение числа из текста

Спасибо за помощь.

5

Re: AHK: Отделение числа из текста

Malcev
Более того, я добавил сейчас ещё .* спереди. Без того и другого остаётся проблема с обрезкой числа. Это какой-то баг AHK. Число, судя по примерам, всегда идёт либо после пробела либо в начале текста. Поэтому ошибки не будет.

6 (изменено: Malcev, 2016-07-18 02:47:12)

Re: AHK: Отделение числа из текста

Можно так:

MsgBox % RegexReplace(mytext, ".*?(\d+).*", "$1")
MsgBox % RegExReplace(mytext, "\D")

А чтобы для кириллицы работала \b нужно вставить (*UCP).
https://autohotkey.com/docs/misc/RegEx- … tm#Options

7 (изменено: Flasher, 2016-07-18 04:30:59)

Re: AHK: Отделение числа из текста

"\D" - точно, убрать все нецифры - самое простое. *UCP - про это знаю.