Использование регулярных выражений, я пытаюсь соответствовать любой строке символов, которая удовлетворяет следующие условия (в порядке отображения):Regex модели, чтобы соответствовать строке, которая не следует двоеточие
- содержит знак доллара
$
; затем - не менее одной буквы
[a-zA-Z]
; затем - нулевые или более буквы, цифры, символы подчеркивания, периоды (точки), открывающие кронштейны и/или закрывающие скобки
[a-zA-Z0-9_.\[\]]*
; затем - one pipe знак
|
; затем - один на знаке
@
; затем - не менее одной буквы
[a-zA-Z]
; затем - ноль или больше букв, цифр и/или символов подчеркивания
[a-zA-Z0-9_]*
; Затем - нулевой колоны
:
Другими словами, если двоеточие находится в конце строки, то он должен не счета в матче.
Вот некоторые примеры правильных матчей:
$tmp1|@hello
$x2.h|@hi_th3re
Valid match$here|@in_the middle of other characters
А вот некоторые примеры недопустимых матчей:
$tmp2|@not_a_match:"because there is a colon"
$c.4a|@also_no_match:
Вот некоторые из моделей, которые я пробовал:
(\$[a-zA-Z])([a-zA-Z0-9_.\[\]]*)(\|@)([a-zA-Z][a-zA-Z0-9_]*(?!.[:]))
(\$[a-zA-Z])([a-zA-Z0-9_.\[\]]+)?(\|@)([a-zA-Z][a-zA-Z0-9_]*(?![:]))
(\$[a-zA-Z])([a-zA-Z0-9_.\[\]]+)?(\|@)([a-zA-Z][a-zA-Z0-9_]*)([^:])
Вы также можете попробовать: [ '\ $ \ ш + [] [\ ш] * \ | @ [^ \ W:.] +'] (Https://regex101.com/r/ iC1sH1/1) может быть недостаточно точным. –