|
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
![]()
Сообщение
#41
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
MIKHAIL:
Код local sFilePath = "http://sHostName/sDir1/sDir2/sDir3/sDirN/sFileName.sExt"
local sFileName = sFilePath:gsub(".-/", "") |
|
|
![]()
Сообщение
#42
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Ksan, наверное, имел в виду:
Код local sFileName = sFilePath:gsub(".*/", "")
|
|
|
![]()
Сообщение
#43
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Реверс делать не эффективно. Эффективнее ограничиться правильной регуляркой.
Замена gsub тоже не эффективный вариант, так как заменять каждый символ затратно. Вариант 1: Код local sFileName = sFilePath:match".+/(.*)$" Вариант 2: Код local sFileName = sFilePath:match"[^/]*$" В случае если после последнего слеша ничего нету, то в обоих вариантех получим пустую строку. В случае если слешей вообще нету, то в первом варианте получим nil, во втором варианте получим всю строку. Какой вариант лучше - решать самому скриптописателю. |
|
|
![]()
Сообщение
#44
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
Setuper, я имел в виду именно то, что написал.
Перед написанием сюда я проверил у себя. Но если настаиваешь на "*" вместо "-", то было бы проще сразу написать, почему (именно для данного случая), потому что правильный ответ выдаёт и так и иначе. При любых видоизменениях исходного текста пути. |
|
|
![]() ![]()
Сообщение
#45
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 41 Регистрация: 9.10.2011 Из: Владимирская обл. Пользователь №: 9 819 Спасибо сказали: 3 раза ![]() |
У меня деликатный вопрос по поводу регулярных выражений. Функция sData = string.gsub скрипт анти-мат.
Например, надо поймать матерное слово [X][Y][Z] sData = string.gsub(sData, "[X][Y][Z]", Но [X][Y][Z] - является продолжением допустимого слова [a][b][c][d]-[X][Y][Z]. А так же [X][Y][Z] является началом другого допустимого слова [X][Y][Z]-[a][b][c][d]. И ещё [X][Y][Z] является внутренней частью (корень, суффикс) слова [a][b][c][d]-[X][Y][Z]-[a][b][c][d] sData = string.gsub(sData, "%s[бX][лY][яZ]%s", replWord) , где replWord - замена мата на безобидное слово, %s - пробельный символ. Исключения: <оскор_бля_ть>, <о_бля_пать> и так далее. -При детектировании необходимо опускать допустимые слова, то что у меня получилось введение пробела %s Необходимо фиксировать слово когда юзер пишет в чат сразу после своего nick'a [X][Y][Z], без пробела на конце. Выводится в чат, если вводить просто запрещенное слово без пробела между ником и словом и без пробела после слова: 01:20:03 <NICK> XYZ Как исправить эту ситуацию, какое регулярное выражение необходимо применить? |
|
|
![]()
Сообщение
#46
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Код "%sXYZ$" Если скрипт для PtokaX, то предварительно нужно удалить символ | с конца строки, или же писать так: Код "%sXYZ|$"
|
|
|
![]() ![]()
Сообщение
#47
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 41 Регистрация: 9.10.2011 Из: Владимирская обл. Пользователь №: 9 819 Спасибо сказали: 3 раза ![]() |
Спасибо, я подозревал о наличии "невидимого пробела" .
|
|
|
![]()
Сообщение
#48
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 41 Регистрация: 9.10.2011 Из: Владимирская обл. Пользователь №: 9 819 Спасибо сказали: 3 раза ![]() |
Выяснил следующее. Одного вида захвата будет не достаточно.
Так как захват "%sСЛОВО|$" будет работать в случае, если после СЛОВА не будет пробела. А так выводит в чат Поэтому необходимо СЛОВО захватить двумя разными захватами чтобы запрещённые слова не выводились в чат: "%sСЛОВО|$" и "%sСЛОВО%s". |
|
|
![]() ![]()
Сообщение
#49
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 41 Регистрация: 9.10.2011 Из: Владимирская обл. Пользователь №: 9 819 Спасибо сказали: 3 раза ![]() |
Данный символ " является инструментом для захвата. Является ли символ магическим. Как экранировать данный символ? Пример экранирования любого магического символа мне не помог. (%.) и (%") .
|
|
|
![]()
Сообщение
#50
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
Цитата Как экранировать данный символ? Код string = "\"Hello world\"" Тоже самое будет и для одинарных ковычек. |
|
|
![]()
Сообщение
#51
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 41 Регистрация: 9.10.2011 Из: Владимирская обл. Пользователь №: 9 819 Спасибо сказали: 3 раза ![]() |
А захват данного символа как осуществить?
|
|
|
![]()
Сообщение
#52
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
\" - это Lua экранирование, так как кавычка является символом синтаксиса Lua (в отличие от символа %, который является экранирующим символом в регулярном выражении).
Захватить символ можно скобками: Код str:find"(\")" можно написать так: Код str:find'(")' То есть, экранировать кавычки нужно в том случае, когда эти же кавычки обозначают строку. |
|
|
![]() ![]()
Сообщение
#53
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 41 Регистрация: 9.10.2011 Из: Владимирская обл. Пользователь №: 9 819 Спасибо сказали: 3 раза ![]() |
Огромное спасибо Setuperу, помогли разобраться .
|
|
|
![]()
Сообщение
#54
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Что за %с – контрольный символ? Пожалуйста, приведите пример.
|
|
|
![]()
Сообщение
#55
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
MIKHAIL,
Подозреваю, это непечатаемые символы с цифровым кодом до 32 (от 0 до 31). Как пример - \r, \n, \t Надеюсь, они вам знакомы? ![]() Вот полный перечень этих символов: %c: \0 \1 \2 \3 \4 \5 \6 \a \b \t \n \v \f \r \14 \15 \16 \17 \18 \19 \20 \21 \22 \23 \24 \25 \26 \27 \28 \29 \30 \31 Возможно, есть ещё один символ. Где-то на форуме было описание каждого из них. |
|
|
![]()
Сообщение
#56
|
|
![]() 7 квадратиков ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз ![]() |
|
|
|
![]() ![]() |
Похожие темы
![]() |
Сейчас: 22.2.2025, 19:57 |