У меня есть некоторые текстовые материалы следующего формата:Сложное Regex Regular Expression
[РОДИТЕЛЕЙ] - [OPTION] - [OPTION]
Например
- BIKE -XT-MM-LX-100-BB
- TRICYCLE -MM-XP
- Мотоциклетные -X100V (-X100V не вариант здесь)
Я использую регулярные выражения отделить варианты от родителя. Отключение опции не так просто, как вы можете видеть из-за некоторых исключений. все, что следует за тире, должно быть опцией, отличной от любой, начиная с X и длиннее двух цифр, например примера №3, который -X100V не является опцией. Тогда я пошел с такими выражениями, как это отделить куски:
// Only separates 2 digit options, but we have more digit options:
(\A[^-]+)(-\w\w\b)+
// 2 digits and more option which -X100V fits into also. but not an option:
(\A[^-]+)(-\w{2,}\b)+
// which separates any 2 digit and longer followed by dash as an option
// unless it is started with X (which rules out my 2 digit -XX options by mistake):
(\A[^-]+)(-[^\BX]\w{1,}\b)+
Теперь мне нужно только еще один шаг, чтобы добавить правило только устранил дело с начинают с -X, но больше, чем две цифры , то я могу снова включить примеры -XT.
Я хотел бы услышать предложения.
@Ic. действительно ценю ваш ответ. Я действительно закончил тем же. однако регулярные выражения являются мощными инструментами для получения одного и того же результата в очень короткой и довольно читаемой строке кода, и я в основном хочу узнать, как это сделать. – Mehrad