1

Тема: AHK: Извлечь слово из предложения.

Существует переменная Var1, которая содержит предложение "@From Igrok: Ты тут?"
Неизменные символы в предложении "@From" и ":".
Задача: Извлечь слово Igrok или любое другое которые будет между "@From" и ":". Эти слово может содержать любые символы и числа, от кириллицы до китайских символов. Создать переменную Var2 и придать ей полученное значение.

2

Re: AHK: Извлечь слово из предложения.

Где код? Какие ошибки встретились?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: Извлечь слово из предложения.

Regex в помощь.

4

Re: AHK: Извлечь слово из предложения.


Var1 = dsadsa @From Akla: dasdasf ; Объявление Var 1. Нужно вырезать "Akla" из предложения

FoundPos := RegExMatch(Var1, "(From .*):", SubPat, 5) ; Обрезает предложение до "From Akla:"

Msgbox % SubPat  ; Отображение результата

Вот на таком моменте я застрял сейчас.


Я не силен в AHK. Перерыл кучу тем в поисках решения.  Прошу объяснить как выполнить эту задачу.

5

Re: AHK: Извлечь слово из предложения.

Lantar25 пишет:

Я не силен в AHK

Данный вопрос имеет к AHK лишь опосредованное отношение, так как синтаксис регулярных выражений везде примерно одинаковый.
Вы выделили сабпаттерн, который включает "From ", что мешает исключить эту часть?

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

6

Re: AHK: Извлечь слово из предложения.

Lantar25

Var1 = dsadsa @From Akla: dasdasf
RegExMatch(Var1, "From (.*):", SubPat)
Msgbox % SubPat1
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7

Re: AHK: Извлечь слово из предложения.

__Михаил__, можно было дать автору и подумать, задачка не самая сложная. Однако, ваше решение не совсем верное:

Var1 = @From Igrok: Люблю ставить двоеточия:::::)
RegExMatch(Var1, "From (.*):", SubPat)
Msgbox % SubPat1
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Извлечь слово из предложения.


Var1 = dsadsadasasd @From Ng2ayMaiSeDenThu13i: dsadasdsadas

RegExMatch(Var1, "From (.*):", SubPat)

Msgbox %SubPat%

Использую такой код, но ответ поступает "From Ng2ayMaiSeDenThu13i: "
Как убрать "From" и ":"

9

Re: AHK: Извлечь слово из предложения.

Нашел свою ошибку. Всем спасибо за помощь.

10

Re: AHK: Извлечь слово из предложения.

Пожалуйста.

11

Re: AHK: Извлечь слово из предложения.

Lantar25

Захотелось вставить свои пять копеек на уже закрытый вопрос, предложу свой вариант в принципе без RegEx.

Если в данной строке только одно имя:

Var1 = dsadsadasasd @From Ng2ayMaiSeDenThu13i: dsadasdsadas
a := strsplit(var1, "@From ",, 2)
a := strsplit(a[2], ": ",, 2)
Var2 := a[1]
msgbox % var2

Если в данной строке будет несколько имен:

Var1 = dsadsadasasd @From Ng2ayMaiSeDenThu13i: dsadasdsadas @From some name
a := strsplit(Var1, "@From ")
for i, k in a 
{
	if ( i = 1 )
		continue
	temp := strsplit(k, ":")
	Var2 .= LTrim(temp[1])"`n"
}
msgbox % var2