1

Тема: AHK: Игнорирование \r (carriage return) в RegEx

Привет, подскажите как удалить из текста всё что между и включая "<sup>...</sup>"
Я посмотрел справочник RegEx, простейший пример:

Clipboard := RegExReplace(Clipboard, "<sup>.*</sup>", "", z)

Это работает, но только в том случае, если там нет символов перевода строки. Текст откуда мне нужно вырезать, может иметь множетсво пустых строк и произвольных символов, к примеру:

А теперь отойдите от окна и взгляните на телеэкран, на лицо <strong>Тонтона</strong>.<sup><a title="         Тонтон (франц.) — Дядюшка, так называют в народе (и журналисты) президента Франсуа Миттерана.   "

ваиви
ваи

href="http://lib.rus.ec/b/114148/read#fn196">[196] </a></sup>Разве он похож на главу государства?

Скорее на дядюшку-профессора: мудрого Директора санатория.

2

Re: AHK: Игнорирование \r (carriage return) в RegEx

Регулярные выражения (RegEx) - краткий справочник пишет:

. Точка соответствует любому отдельному символу (исключая символы новой строки: `r и `n). Например, ab. отвечает abc и abz и ab_
...

ВсеЧтоУгодно: шаблон точка-звездочка .* является одним из самых необязательных шаблонов, поскольку он отвечает любой последовательности (даже пустой) любых символов (кроме `r и `n).
...

\s Отвечает любому из пробельных символов (одному), то есть space, tab, `r , `n. Наоборот, заглавная \S означает "любой из непробельных символов".

3

Re: AHK: Игнорирование \r (carriage return) в RegEx

Real-3, в AHK_L это исправлено.

4 (изменено: Real-3, 2012-07-13 23:47:52)

Re: AHK: Игнорирование \r (carriage return) в RegEx

ypppu, Я прочитал мельком эту документацию, и смог сделать кучу крутых и нужных мне штук, но застрял на этой фигне)
В моём случае пустых строк и пробельных символов может быть сколько угодно,
подходящей универсальной конструкции мною не найдено

разве что извращенские, вроде :

Clipboard := RegExReplace(Clipboard, "<sup>.*(\R*)?(.*)?(\R*)?(.*)?(\R*)?(.*)?(\R*)?(.*)?(\R*)?(.*)?(\R*)?(.*)?(\R*)?(.*)?(\R*)?(.*)?</sup>", "", z)

Александр_, что именно исправлено?
Всмысле ".*" учитывает даже пробельные символы?

5 (изменено: Александр_, 2012-07-14 00:03:32)

Re: AHK: Игнорирование \r (carriage return) в RegEx

Real-3 пишет:

".*(\R*)?(.*)?.*(\R*)?(.*)?.*(\R*)?(.*)?.*(\R*)?(.*)?.*(\R*)?(.*)?.*(\R*)?(.*)?.*(\R*)?(.*)?"

КО просил передать, что этот шаблон не решает проблемы, т.к. допускает только 7 переводов строки, проще и правильнее будет "(\R|.)*".

Real-3 пишет:

Александр_, что именно исправлено?
Всмысле ".*" учитывает даже пробельные символы?

Да. Кстати, последняя версия обычного AHK тоже перевод строки никак не выделяет.

6

Re: AHK: Игнорирование \r (carriage return) в RegEx

Александр_, спасибо, это действительно то что нужно
Тот извращенский вариант конечно же был лажей).

Я тоже пытался использовать "|", но как то по кривому типа "((\R)|(.*))*" и это конечно же не работало))

7

Re: AHK: Игнорирование \r (carriage return) в RegEx

На самом деле правильнее так:

String =
(
А теперь отойдите от окна и взгляните на телеэкран, на лицо <strong>Тонтона</strong>.<sup><a title="         Тонтон (франц.) — Дядюшка, так называют в народе (и журналисты) президента Франсуа Миттерана.   "

ваиви
ваи

href="http://lib.rus.ec/b/114148/read#fn196">[196] </a></sup>Разве он похож на главу государства?

Скорее на дядюшку-профессора: мудрого Директора санатория.
)
MsgBox, % RegExReplace(String, "s)<sup>.*</sup>", "")

См. Regular Expressions (RegEx) - Quick Reference - Options - s

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