Как найти точное совпадение с использованием регулярного выражения в Ocaml? Например, у меня есть такой код:Соответствие точной строки в Ocaml с использованием regex
let contains s1 s2 =
let re = Str.regexp_string s2
in
try ignore (Str.search_forward re s1 0); true
with Not_found -> false
где s2 является «_X_1» и s1 каналы строки, как «A_1_X_1», «A_1_X_2», .... и так далее функции «содержит». Целью является точное совпадение, когда s1 - «A_1_X_1». Но текущий код находит совпадение даже тогда, когда s1 является «A_1_X_10», «A_1_X_11», «A_1_X_100» и т. Д.
Я попытался использовать «[_x_1]», «[_X_1] $» как s2 вместо «_X_1», но похоже, не работает. Может кто-нибудь предположить, что может быть неправильным?
Вы можете использовать 'Str.regexp_string' который производит регулярное выражение, которое соответствует буквально строке, передаваемой, без интерпретации метасимволы. –
да, вы правы Матиас. Также содержит «A_1_X_1» «_X_1 $» возвращает false –
Да, я надеялся, что Str.regexp_string вернет^_X_1 $, если мы передадим ему «_X_1». Поэтому мой код был написан таким образом. Но Str.regexp_string делает что-то еще ... –