#regex #validation
#регулярное выражение #проверка
Вопрос:
Мне нужно регулярное выражение, которое проверяет
"Optional str1 as string = ''"
,
но также
"str2 as string"
а также
"str3 as boolean, Optional dtm as date = Now"
Поэтому, когда "Optional"
используется, должен быть "="
знак
, но "Optional"
он необязательный
Это то, что я пробовал:
(Optionals|)(.*)(s=s|)(.*)
и это неправильно. Он проверяет слишком много.
Какие-либо подсказки?
Комментарии:
1. Похоже, что вопрос, который вы задаете, может быть второстепенной проблемой по отношению к реальной проблеме, которую вы пытаетесь решить. (Похоже, вы пытаетесь проверить синтаксис существующего языка программирования). Если это так, вы, вероятно, получите более качественный ответ, если предоставите больше контекста для более крупной проблемы, которую вы пытаетесь решить.
Ответ №1:
Вы можете использовать привязку ^
для подтверждения начала строки.
Затем либо сопоставьте строку, если она содержит необязательные, за которыми следует знак равенства в строке, либо используйте отрицательный прогноз (если поддерживается) и сопоставьте всю строку, если она не содержит необязательных, используя чередование |
^(?:.*bOptionalb.*s=s.*|(?!.*bOptionalb). )
Объяснение
^
Начало строки(?:
Не группа захвата.*bOptionalb.*s=s.*
Сопоставьте всю строку, если она содержит необязательные символы и знак равенства между пробелами|
Или(?!.*bOptionalb).
Сопоставьте всю строку, если она не содержит необязательных
)
Закрыть группу без захвата