Мне нужна помощь в создании регулярного выражения, которое распознает токены в тексте.
лексем требования заключаются в следующем:Регулярное выражение с цифрами и некоторыми специальными символами
- должна начинаться и заканчиваться
$
- может содержать любую комбинацию букв, цифр,
_
- может содержать только один последовательный
.
, что означает:$some.valid.sample$
действителен$some..invalid.sample$
не
- могут содержать квадратные скобки, но только если они содержат ряд внутри, а это означает:
$some.valid[0].sampl$
действует$some.invalid[].sample$
не
- содержит от 1 до 64 символов
дополнительные требования (после обсуждения в комментариях):
- квадратные скобки с номером должны сопровождаться
.
, если они не находятся на конце (т. если они не только перед закрытием$
) - ограничение длины относится к содержанию между двумя
$
Может кто-нибудь помочь мне с этим?
До сих пор я \$([A-Za-z0-9._]*(\[\d+\])*)+]$
Try [ '\ $ (?: [A-Za-z0-9_ ] | \ [\ d + \]) + (: \ (?.? [A-Za-z0-9_] | \ [\ d + \]) +) * \ $ '] (https://regex101.com/r/BAniMi/1) –
Я думаю 'Regex.Matches (s, @" \ $ (?: \ w | \ [\ d +]) + (?: \. (?: \ w | \ [\ d +]) +) * \ $ ", RegexOptions.ECMAScript)' будет то, что вам нужно (если вы хотите только совместить буквы и цифры ASCII). –
Должны ли квадратные скобки появляться в конце каждого сегмента или '$ ab [0] cd $' также действительны? –