|
Помогите с регулярным выражением
| ☑ |
0
location
naïve
03.11.22
✎
17:49
|
Добрый день. Подскажите написал такую конструкцию для компоненты RegEx, не сильно шибко разбираюсь как их правильно писать.
(\S{2}\d{2}-\d{6})
они нужны для отлова таких кодов
АА00-000001
и вроде как работает, хотя и 0000-000001 тоже отлавливает.
а вот если такая конструкция
АБА00-000001 то получается БА00-000001
АА00-0001010 то получается АА00-000101
а такие вообще не должно брать.
Помогите как правильно написать ее.
|
|
2
lodger
03.11.22
✎
18:01
|
(0) ты в регу должен добавить якори, чтобы рега понимала, что "слово" началось и закончилось.
иначе она всё правильно делает - нашла последовательность символов по маске
|
|
3
lodger
03.11.22
✎
18:16
|
если вставить флаг \b в конце маски, то конец номера ловится нормально
https://regex101.com/r/EqeClr/1
а в начале не хочет...
|
|
4
location
naïve
03.11.22
✎
18:26
|
(3) по вашему примеру да, в конце обрубает, спасибо. а что же в начале еще дописать?
|
|
5
kittystark
03.11.22
✎
20:06
|
(0) \S{2} - это два непробельных символа, поэтому "и 0000-000001 тоже отлавливает"
если вначале нужны строго не 2 цифры после пробела - попробуй (\w{2}\d{2}-\d{6})
для кириллицы возможно вместо \w потребуется еще и [а-яА-Я]
для полноты постановки вопроса - нужны примеры реальных строк, т.е. мне важно есть ли слева / справа что-либо или нет
типа: "бла-бла АБА00-000001 тук-тук"
или чистый "АБА00-000001"
вообщем жду примеров - несколько как надо и несколько как НЕ надо, с учетом вышесказанного
|
|
6
Кирпич
03.11.22
✎
21:37
|
проходили же недавно
(?<!(\S))\D{2}\d{2}-\d{6}\b
|
|
7
Кирпич
03.11.22
✎
21:39
|
(?<!\S)\D{2}\d{2}-\d{6}(?=\s)
|
|
8
Кирпич
03.11.22
✎
21:42
|
|
|
9
kittystark
04.11.22
✎
08:54
|
(8) вот пользуясь случаем, хочу спросить:
эти lookahead - lookbehind в 1С как использовать?
я пока только VBScript.RegExp работал
|
|
10
Кирпич
04.11.22
✎
11:36
|
(8)так в 1с вроде нету такого
|
|