/ / Поведінка Werid - вираження regex Java, взяте з DB - java, regex

Вердид поведінки - вираз Java regex взятий з DB - java, regex

Я маю вираз regex, що зберігається в БД - "\\E\\", Я використовую java, щоб витягнути його і зрівняти з Strings.

Я думав, що, оскільки java читає з БД, вона знає, що вона може уникати спеціальних символів SQL, і все, що мені потрібно, це уникнути спеціальних хактерів regex, так що цей вираз насправді відповідає "\E\".

Проблема в тому, що вона macthes "E" швидше за все "\E\" , чому?

Відповіді:

2 для відповіді № 1

Якщо ви хочете використовувати регулярний вираз для відповідності одному літеральному символу зворотної коси рисок, вам потрібно використовувати чотири зворотні коси риски в рядку Java.

  • Регістр \ відповідає одному літеральному зворотному слешу.
  • Рядок "\" позначає єдиний зворотний слеш.
  • Тому для того, щоб побудувати регулярний вираз, що складається з двох зворотних скіс, вам знадобиться рядок Java з чотирма зворотними рисами.

Отже, вам потрібно "\\\\E\\\\" створити регулярний вираз, який відповідає \E\...