|
|
|
Задача. Регулярное выражение для идентификатора | ☑ | ||
|---|---|---|---|---|
|
0
Ненавижу 1С
гуру
20.01.11
✎
12:24
|
Придумать регулярное выражение для идентфикатора.
Правила: 1. Начинается с буквы (русского, латинского и проч. алфавитов) или символа "_" 2. Далее могут идти символы из пункта 1 или цифры |
|||
|
1
Ursus maritimus
20.01.11
✎
12:26
|
Массив не канает по религиозным убеждениям? Или о чем речь?
|
|||
|
2
Ненавижу 1С
гуру
20.01.11
✎
12:28
|
(1) при чем тут массив? на входе строка допустим, надо подобрать шаблон регулярного выражения вытаскивающий идентификаторы
|
|||
|
3
Ursus maritimus
20.01.11
✎
12:30
|
;*=
|
|||
|
4
Ursus maritimus
20.01.11
✎
12:30
|
Ну и перевод строки обработать
|
|||
|
5
Ненавижу 1С
гуру
20.01.11
✎
12:33
|
(4) перевода строки допустим вообще нет
(3) что это? |
|||
|
6
Живой Ископаемый
20.01.11
✎
12:40
|
Это чего, такой изощренный способ знают ли 1Сники регулярки или просто понтуются? :)
|
|||
|
7
Ненавижу 1С
гуру
20.01.11
✎
12:42
|
(6) мне самому нужно на самом деле ))
|
|||
|
8
Кирпич
20.01.11
✎
12:43
|
Что за понты?
яндекс говорит чота типа [a-z][a-z0-9]* нужное добавить |
|||
|
9
Ненавижу 1С
гуру
20.01.11
✎
12:44
|
(8) русские буквы не канают
|
|||
|
10
Живой Ископаемый
20.01.11
✎
12:46
|
[a-z,а-я][a-z,а-я,0-9]*
? |
|||
|
11
Кирпич
20.01.11
✎
12:48
|
вот нашел у себя. когда то накарябал компилятор с языка 1с (понтуюсь)
у меня так было identifier : /[a-zA-Zа-яА-ЯЁё_][a-zA-Zа-яА-ЯЁё_0-9]*/ |
|||
|
12
Ненавижу 1С
гуру
20.01.11
✎
12:53
|
ага, а потом добавим еще украинскую i (которая с двумя точками) не забудем про армянский и грузинский алфавиты, ну и про бурятский тоже (наверняка у них есть уникальная закорючка)
я про то, что вот в шарпе метод char IsLetter() корректно это всё выводит, а вот как рег. выражением сделать? |
|||
|
13
Кирпич
20.01.11
✎
12:55
|
(12) Ну тебе ж нарисовали уже регвыражения
|
|||
|
14
Живой Ископаемый
20.01.11
✎
13:00
|
2(12) э... в 1Совском коде нельзя использовать идентификаторы с Украинской i... Вроде...
|
|||
|
15
Ненавижу 1С
гуру
20.01.11
✎
13:00
|
(13) где? для произвольного алфавита из юникод?
|
|||
|
16
Ненавижу 1С
гуру
20.01.11
✎
13:01
|
(14) а причем тут 1С?
|
|||
|
17
sergeante
20.01.11
✎
13:01
|
(12) а тебе юникод нужен? Скорее всего у IsLetter() более продвинутый алгорит с учётом юникода. В регулярках увы и ах.
|
|||
|
18
Andry888
20.01.11
✎
13:02
|
Это в 1С нужно сделать?
|
|||
|
19
Кирпич
20.01.11
✎
13:02
|
любая буква вроде w обозначается
|
|||
|
20
Ненавижу 1С
гуру
20.01.11
✎
13:04
|
(19) точнее любая буква и цифра и даже _
так что под первый символ не катит |
|||
|
21
sergeante
20.01.11
✎
13:04
|
(19) юникод не работает.
|
|||
|
22
sergeante
20.01.11
✎
13:06
|
/\w/.test('z')
true /\w/.test('ф') false |
|||
|
23
sergeante
20.01.11
✎
13:07
|
остаётся только диаппазоны указывать
|
|||
|
24
Живой Ископаемый
20.01.11
✎
13:07
|
||||
|
25
Ненавижу 1С
гуру
20.01.11
✎
13:08
|
(22) у меня работает прекрасно в шарпе
|
|||
|
26
Ненавижу 1С
гуру
20.01.11
✎
13:08
|
(18) не обязательно
(14) http://mynaf.narod.ru/UniCode.JPG |
|||
|
27
Andry888
20.01.11
✎
13:08
|
(20) ну вычесть цифры и _ можно, да и в зависимости на каком языке пишешь нужно посмотреть справку... ведь состав регулярок везде разный...
|
|||
|
28
Ненавижу 1С
гуру
20.01.11
✎
13:08
|
(27) научи вычитать
|
|||
|
29
Ненавижу 1С
гуру
20.01.11
✎
13:09
|
+(27) собственно это будет решением
|
|||
|
30
Живой Ископаемый
20.01.11
✎
13:09
|
читать:
"Matching a Specific Code Point" или "Unicode Blocks" |
|||
|
31
sergeante
20.01.11
✎
13:09
|
(25) значи юзают разные библиотеки, и более того, разные диалекты наверняка
|
|||
|
32
Andry888
20.01.11
✎
13:12
|
(28) так озвучь на чем пишешь то...
|
|||
|
33
Ненавижу 1С
гуру
20.01.11
✎
13:13
|
(32) пишу на шарпе, но казалось что основа регвыражений везде общая
|
|||
|
34
Ненавижу 1С
гуру
20.01.11
✎
13:20
|
отлично, всем спасибо \p{L} - выдает только буквы
|
|||
|
35
Живой Ископаемый
20.01.11
✎
13:27
|
||||
|
36
Andry888
20.01.11
✎
13:27
|
во нашел ... [ базовая_группа -[ исключенная_группа ]]
|
|||
|
37
Живой Ископаемый
20.01.11
✎
13:29
|
конкретно:
"Word characters (letters, numbers and underscores)"- "[\p{L}\p{N}\p{Pc}]" |
|||
|
38
Ненавижу 1С
гуру
20.01.11
✎
13:32
|
(37) сенкс
(36) кстати да: [\w-[\d]] - любая буква или _ |
|||
|
39
Лефмихалыч
20.01.11
✎
13:32
|
[_|0-9|a-z]{0,1}[_|0-9|a-z]*
|
|||
|
40
Ненавижу 1С
гуру
20.01.11
✎
13:33
|
(39) плохо читаешь, не вник еще ))
|
|||
|
41
Лефмихалыч
20.01.11
✎
13:33
|
или проще так
[_|\d|\w]{0,1}[_|\d|\w]* |
|||
|
42
Ненавижу 1С
гуру
20.01.11
✎
13:34
|
(41) нельзя на цифру начинать
|
|||
|
43
Лефмихалыч
20.01.11
✎
13:34
|
(40) ветку не читал. про "Любой алфавит" между глаз попало. Вот (41) исправился
|
|||
|
44
Ненавижу 1С
гуру
20.01.11
✎
13:36
|
(43) неа ни разу \w кстати дает любую букву, цифру или _
по крайней мере в шарпе |
|||
|
45
Лефмихалыч
20.01.11
✎
13:36
|
не, уита получается
|
|||
|
46
Ненавижу 1С
гуру
20.01.11
✎
13:36
|
в общем итог такой:
public static bool IsIdentifier(string value) { Regex regex = new Regex(@"^([\w-[\d]])\w*$"); return regex.IsMatch(value); } |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |