белое пространство либо пробел, знак табуляции или символ новой строки (т.е., возврат каретки или перевод строки)Как разбить на пробелы в Ocaml?
Я предполагаю, что \s
охватывает ,
\t
, \n
, \r
и \f
Но когда я попытался с помощью \s
он не разбить строку правильно:
# let line1 = "We the People of the United States, in Order to form a more perfect";;
# let wsp_regex = Str.regexp "\\s+";;
# let words = Str.split wsp_regex line1;;
val words : string list =
["We the People of the United State"; ", in Order to form a more perfect"]
# let wsp_regex = Str.regexp "[ \\s]+";;
# let words = Str.split wsp_regex line1;;
val words : string list =
["We"; "the"; "People"; "of"; "the"; "United"; "State"; ","; "in"; "Order"; "to"; "form"; "a"; "more"; "perfect"]
# let wsp_regex = Str.regexp "[\\s]+";;
# let words = Str.split wsp_regex line1;;
val words : string list =
["We the People of the United State"; ", in Order to form a more perfect"]
# let wsp_regex = Str.regexp "[ \\s\\t\\n\\r]+";;
# let words = Str.split wsp_regex line1;;
val words : string list =
["We"; "he"; "People"; "of"; "he"; "U"; "i"; "ed"; "S"; "a"; "e"; ","; "i"; "O"; "de"; "o"; "fo"; "m"; "a"; "mo"; "e"; "pe"; "fec"]
# let wsp_regex = Str.regexp "[\s]+";;
Characters 29-31:
Warning 14: illegal backslash escape in string.
val wsp_regex : Str.regexp = <abstr>
# let words = Str.split wsp_regex line1;;
val words : string list =
["We the People of the United State"; ", in Order to form a more perfect"]
# let wsp_regex = Str.regexp "[ \s]+";;
Characters 30-32:
Warning 14: illegal backslash escape in string.
val wsp_regex : Str.regexp = <abstr>
# let words = Str.split wsp_regex line1;;
val words : string list =
["We"; "the"; "People"; "of"; "the"; "United"; "State"; ","; "in"; "Order"; "to"; "form"; "a"; "more"; "perfect"]
# let wsp_regex = Str.regexp "[ \t\n\r\f]+";;
Characters 36-38:
Warning 14: illegal backslash escape in string.
val wsp_regex : Str.regexp = <abstr>
# let words = Str.split wsp_regex line1;;
val words : string list =
["We"; "the"; "People"; "o"; "the"; "United"; "States,"; "in"; "Order"; "to"; "orm"; "a"; "more"; "per"; "ect"]
# let wsp_regex = Str.regexp "[\t\n\r\f]+";;
Characters 35-37:
Warning 14: illegal backslash escape in string.
val wsp_regex : Str.regexp = <abstr>
# let words = Str.split wsp_regex line1;;
val words : string list =
["We the People o"; " the United States, in Order to "; "orm a more per"; "ect"]
Единственные случаи, которые, кажется, работает, являются:
# let wsp_regex = Str.regexp "[ ]+";;
# let words = Str.split wsp_regex line1;;
val words : string list =
["We"; "the"; "People"; "of"; "the"; "United"; "States,"; "in"; "Order"; "to"; "form"; "a"; "more"; "perfect"]
# let wsp_regex = Str.regexp "[ \t\n\r]+";;
# let words = Str.split wsp_regex line1;;
val words : string list =
["We"; "the"; "People"; "of"; "the"; "United"; "States,"; "in"; "Order"; "to"; "form"; "a"; "more"; "perfect"]
Я не знаю, почему второй случай работает потому, что делает [ \s]+
не работает (Ocaml думает, что я хочу разделить на или
s
)
Все, что я хочу, чтобы разделить на пробелы без использования только , потому что я также хочу взять
\t
, \n
, \r
и \f
.
Однако я не могу понять, как создать выражение регулярных выражений в Ocaml для разделения на пробелы.
Если кто-то может предоставить мне рабочее выражение, которое было бы очень признательно!
благодарит вас !!! Я был так одурманен, почему это не работает, я ценю, что вы помогаете :) – 14wml