1

Тема: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

Натолкнулся на досадное ограничение в Autohotkey. А именно: autohotkey не распознает русские символы, как буквы. Т.е. \w не будет искать буквы русского алфавита, что очень и очень досадно.
Вопрос: можно ли это как-то обойти? (предлагать использовать \S или . не предлагать )
Есть ли другой способ, кроме как использования DLL? Если нет, то может уже есть готовые решения?

Еще, в догонку, хочу спросить как в RegExReplace в Replacement передать \n, \t (я ввожу их в текстовое поле и оттуда они воспринимаются именно, как строка "\n", "\t", а не символ переноса строки и табуляции. Или их надо каким-то образом обрабатывать? Использовать ` вместо \ тоже пробовал.

2 (изменено: creature.ws, 2012-08-29 17:25:49)

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

MsgBox % RegExReplace("ЙЦУasdasdфыв1234", "[\wа-яА-Я]", "★")
MsgBox % RegExReplace("A\nB\nC\n", "\\n", "`n")

autohotkey не распознает русские символы, как буквы.

Какое бескомпромиссное заявление.

3

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

creature.ws пишет:
MsgBox % RegExReplace("ЙЦУasdasdфыв1234", "[\wа-яА-Я]", "★")
MsgBox % RegExReplace("A\nB\nC\n", "\\n", "`n")

autohotkey не распознает русские символы, как буквы.

Какое бескомпромиссное заявление.

[\wа-яА-Я] ≠ \w

Моя задача, чтобы \w матчил и русские символы тоже.
Конечно, можно пытаться заменять во введенной строке \w на [\wа-яА-Я], а \W на [^\wа-яА-Я], и учесть все подводные камни этого дела. Но лучше как-нить без этого.

За

 RegExReplace("A\nB\nC\n", "\\n", "`n")

спасибо

4 (изменено: creature.ws, 2012-08-29 19:11:31)

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

AHK использует PCRE
PCRE умеет обрабатывать \w
По ссылке видим:

In PCRE, \d, \D, \s, \S, \w, and \W recognize only ASCII characters.

По ссылке видим список подходящих символов.

[\wа-яА-Я] ≠ \w

Очень верное замечание, ведь \w это то, что по ссылкам выше.

Моя задача, чтобы \w матчил и русские символы тоже.

Исходные файлы AutoHotkey_L предоставляются по лицензии GPL2, PCRE — BSD.

можно пытаться заменять во введенной строке \w на [\wа-яА-Я], а \W на [^\wа-яА-Я], и учесть все подводные камни этого дела. Но лучше как-нить без этого.

О каких подводных камнях речь?

5

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

О каких подводных камнях речь?

Например, что \w в "нормальных" языках (на Java, допустим) — это не только кириллица и латиница, а еще куча других алфавитов.
И я не такой знаток регулярок Может, в каких-то случаях такая замена будет ломать регулярку, но таких случаев пока не придумал (может, их и нет).

6 (изменено: creature.ws, 2012-08-29 19:44:46)

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

Речь в теме о кириллице,  хотите использовать регулярные выражения приемлемые для java и прочих «нормальных»  языков в приложении использующем PCRE — ссылки на исходники приведены выше.

7

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

Спасибо большое я получил ответ на свой вопрос

8 (изменено: creature.ws, 2012-08-29 20:16:51)

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

А вообще, я ошибался:

MsgBox % RegExReplace("σЙ∑ЦςУσ✡s-_—dasdфыв12βωφδ34", "(*UCP)[\w]", "★")

Version 8.10 25-Jun-2010

9.  Added PCRE_UCP to make \b, \d, \s, \w, and certain POSIX character classes
    use Unicode properties. (*UCP) at the start of a pattern can be used to set
    this option. Modified pcretest to add /W to test this facility. Added
    REG_UCP to make it available via the POSIX interface.

Справедливо для AHK_L

9

Re: AHK: Регулярный выражения (RegEx) в Autohotkey. Кириллица и спец. симв

Работает! Выручили.