Форум программистов, компьютерный форум, киберфорум
Наши страницы
AutoIt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Malysh-ok
1 / 1 / 0
Регистрация: 17.10.2013
Сообщений: 57
1

Составить регулярное выражение для замены в строке всех двоеточий, кроме одного

06.10.2016, 17:30. Просмотров 787. Ответов 2
Метки нет (Все метки)

Добрый день всем!

Туплю сильно: не могу составить рег-выражение для замены (т.е. с использованием функции StringRegExpReplace) в строке пути к файлу (полном) символа ":" (в общем случае - всех запрещенных в Windows символов в названии файла) с таким расчетом, чтобы в первых двух символах строки (буква диска и ":") ничего не менялось.

Может поможет кто? Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2016, 17:30
Ответы с готовыми решениями:

Регулярное выражение для удаления всех тегов, кроме указанных
вот регулярка. она очищает только те теги, которые указаны. а мне нужно...

Преобразовать текст путем замены запятыми всех двоеточий и точками всех восклицательных знаков
C++ Даны две строки произвольного текста. Известно, что среди символов в каждой...

Регулярное выражение для замены
Привет всем! Нужно регулярное выражение.. Оно должно проверять переменную...

Регулярное выражение для замены тега
Привет. Подскажите, регулярку для замены в тексте допустим, каждого 3 тега p,...

Регулярное выражение для поиска и замены
Привет! Прошу помощи сообщества - нужно составить регулярное выражение для...

2
Dead_Mopo3
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 26
12.03.2018, 00:17 2
Creator

[0] = Исходный путь
[1] = Имя диска
[2] = Путь без имени и расширения файла
[3] = Путь бз расширения файла
[4] = Путь без имени диска
[5] = Имя файла и его расширение
[6] = Имя файла
[7] = Только расширение файла

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
;===============================================================================
; Function Name:    _PathSplitByRegExp()
; Description:      Splits the path to 9 elements.
; Parameter(s):     $sPath - Path to split.
; Requirement(s):   
; Return Value(s):  On seccess - Array $aRetArray that contain 9 elements:
;                   $aRetArray[0] = Full path ($sPath)
;                   $aRetArray[1] = Drive letter
;                   $aRetArray[2] = Path without FileName and extension
;                   $aRetArray[3] = Full path without File Extension
;                   $aRetArray[4] = Full path without drive letter
;                   $aRetArray[5] = Full path without drive letter and without FileName and extension
;                   $aRetArray[6] = FileName and extension
;                   $aRetArray[7] = Just Filename
;                   $aRetArray[8] = Just Extension of a file
;
;                   On failure - If $sPath is not a valid path (the path is not splitable), then original $sPath is returned.
;                   If $sPath does not include supported delimiters or it's emty, @error set to 1 and -1 is returned.
;
; Note(s):          The path can include backslash as well (exmp: C:/test/test.zip).
;
; Author(s):        G.Sandler a.k.a CreatoR (MrCreatoR) - Thanks to amel27 for help with RegExp
;===============================================================================
Func _PathSplitByRegExp($sPath)
    If $sPath = "" Or (StringInStr($sPath, "\") And StringInStr($sPath, "/")) Then
        Return SetError(1, 0, -1)
    EndIf
    
    Local $aRetArray[9], $pDelim = ""
    
    If StringRegExp($sPath, '^(?i)([A-Z]:|\\)(\\[^\\]+)+$') Then
        $pDelim = "\"
    EndIf
    
    If StringRegExp($sPath, '(?i)(^.*:/)(/[^/]+)+$') Then
        $pDelim = "//"
    EndIf
    
    If $pDelim = "" Then
        $pDelim = "/"
    EndIf
    
    If Not StringInStr($sPath, $pDelim) Then
        Return $sPath
    EndIf
    
    If $pDelim = "\" Then
        $pDelim &= "\"
    EndIf
    
    $aRetArray[0] = $sPath ;Full path
    $aRetArray[1] = StringRegExpReplace($sPath,  $pDelim & '.*', $pDelim) ;Drive letter
    $aRetArray[2] = StringRegExpReplace($sPath, $pDelim & '[^' & $pDelim & ']*$', '') ;Path without FileName and extension
    $aRetArray[3] = StringRegExpReplace($sPath, '\.[^.]*$', '') ;Full path without File Extension
    $aRetArray[4] = StringRegExpReplace($sPath, '(?i)([A-Z]:' & $pDelim & ')', '') ;Full path without drive letter
    $aRetArray[5] = StringRegExpReplace($aRetArray[4], $pDelim & '[^' & $pDelim & ']*$', '') ;Full path without drive letter and without FileName and extension
    $aRetArray[6] = StringRegExpReplace($sPath, '^.*' & $pDelim, '') ;FileName and extension
    $aRetArray[7] = StringRegExpReplace($sPath, '.*' & $pDelim & '|\.[^.]*$', '') ;Just Filename
    $aRetArray[8] = StringRegExpReplace($aRetArray[6], '^.*\.|^.*$', '') ;Just Extension of a file
    
    Return $aRetArray
EndFunc
Добавлено через 7 минут
Спасибо Creatorу

[0] = Исходный путь
[1] = Имя диска
[2] = Путь без имени и расширения файла
[3] = Путь без расширения файла
[4] = Путь без имени диска
[5] = Путь без имени диска без имени файла и его расширения
[6] = Имя файла и его расширение
[7] = Имя файла
[8] = Только расширение файла
0
Emilien
530 / 425 / 249
Регистрация: 07.11.2015
Сообщений: 702
17.03.2018, 23:31 3
vb.net
1
StringRegExpReplace($str, ':|^(?i)[A-Z]:(*SKIP)(*F)', '')
vb.net
1
StringRegExpReplace($str, '\G(?i:^[A-Z]:)?+[^:]*\K:', '')
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2018, 23:31

Регулярное выражение для замены части текста
Столкнулся со странной проблемой. Нужно сделать регулярное выражение, которое...

Регулярное выражение для замены текста в файлах .php
Сабж. Есть вирутальный сервер на дебиане, на нём хостятся сайты. Есть...

Регулярное выражение для поиска и замены строк по условию
Помогите пожалуйста составить регулярку, если конечно кто-то разбирается в этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru