Багато програмістів знають радість збивати швидкий регулярний вираз, в ці дні часто за допомогою якогось веб-сервісу, або, традиційно, за інтерактивного підказки, або, можливо, написання невеликого сценарію, який має регулярний вираз, що розробляється, і колекцію тестових випадків . У будь-якому випадку процес є ітераційним і досить швидким: продовжуйте злому криптовалютного рядка, поки він не збігається і не зафіксує те, що ви хочете, і відхилить те, що ви не хочете.
Для простого випадку результат може бути чимось таким, як регекс Java:
Pattern re = Pattern.compile(
"^\\s*(?:(?:([\\d]+)\\s*:\\s*)?(?:([\\d]+)\\s*:\\s*))?([\\d]+)(?:\\s*[.,]\\s*([0-9]+))?\\s*$"
);
Багато програмістів також знають, що потрібно редагувати регулярний вираз або просто кодувати навколо регулярного виразу в застарілій базі коду. З невеликим редагуванням, щоб розділити його, вище regexp все ще дуже легко зрозуміти для всіх, хто добре знайомий з регулярними експедиціями, і ветеран regexp повинен відразу побачити, що він робить (відповісти в кінці публікації, якщо хтось захоче вправу самі розібратися).
Однак речам не потрібно набагато складніше, щоб регулярний генекп став справді єдиним для запису, і навіть при ретельному документознавстві (що, звичайно, кожен робить для всіх складних регулярних виразів, які вони пишуть ...), модифікація регулярних виразів стає складне завдання. Це може бути і дуже небезпечним завданням, якщо regexp не буде ретельно перевірений одиницею (але, звичайно, кожен має вичерпні одиничні тести для всіх своїх комплексних регулярних виразів, як позитивних, так і негативних ...).
Отже, коротке оповідання, чи є рішення / альтернатива для читання рішень / альтернативи для регулярних виразів, не втрачаючи своєї сили? Як би виглядало вищезгадане regexp з альтернативним підходом? Будь-яка мова є чудовою, хоча найкращим є багатомовне рішення, оскільки ступінь зворотного зразка є багатомовною.
І тоді, що робить більш раннє regexp, це це: проаналізувати рядок чисел у форматі 1:2:3.4
, захоплюючи кожне число, де дозволено пробіли і 3
потрібно лише .