그냥 파일의 정규식을 바꿀 때 re2을 사용하려고하면 테스트는 간단한 문자열로 전달됩니다. 내가 ss.xml
로 파일에 내용을 넣을 때OCaml re2 여러 줄 문자열
# module Re2 = Re2.Std.Re2;;
# let re = Re2.create_exn "<key>Tags.*<\\/array>" ;;
# let orig = "abc <key>Tags</key><array><string>OCaml</string></array> end";;
# Re2.replace_exn ~f:(fun _ -> "<key>Tags</key><array/>") re orig;;
- : string = "abc <key>Tags</key><array/> end"
그러나 :
<key>Starred</key>
<false/>
<key>Tags</key>
<array>
<string>Think</string>
<string>Performance Test</string>
<string>Racket</string>
<string>OCaml</string>
</array>
<key>Time Zone</key>
<string>Asia/Shanghai</string>
OCaml의 소스 코드 :
open Core.Std
open Async.Std
module Re2 = Re2.Std.Re2
let trans_reg (input: string) : string =
let re = Re2.create_exn "<key>Tags.*<\\/array>" in
let target = "<key>Tags</key><array/>" in
Re2.replace_exn ~f:(fun _ -> target) re input
let handle_file (filename: string) =
let%bind text = Reader.file_contents filename in
Writer.save (filename^".xml") ~contents:(trans_reg text)
let() =
Command.(run (async ~summary:"" Spec.empty (fun _ -> handle_file "ss.xml")))
아무것도 내 새 파일 ss.xml.xml
에서 변하지 없습니다.
궁금 해서요 :
- 방법이 경우에 일치하는 정규식 할 수 있습니다.
- 언제 replace
Match.t
의 매개 변수를~f:(Match.t -> string)
에 사용합니까?()
감사합니다. 난 단지 DayOne 저널의 데이터를 수정하고 싶습니다, XML 형식은 간단합니다,이 경우에는 정규식이 작동합니다. – liweijian