私はライブラリFsVerbalExpressionsを使用していくつかの関数を書いています。プログラムでregExを構築しようとするのは苦労しています。プログラムでFsVerbalExpressionsライブラリを使用してF#正規表現を構築する
私は、文字列"Int. Bus. Mach"
を持っている場合たとえば、私は期間および空白を削除することができますし、私が何をしたいのですがどのような配列
let splitString = [|"Int"; "Bus"; "Mach"|]
で終わるそのようsplitString
から正規表現を構築しています結果は次のとおりです。
let hardCoded =
VerbEx()
|> startOfLine
|> then' "Int"
|> anything
|> whiteSpace
|> then' "Bus"
|> anything
|> whiteSpace
|> then' "Mach"
hardCoded;;
val it : VerbEx =
^(Int)(.*)\s(Bus)(.*)\s(Mach) {MatchTimeout = -00:00:00.0010000;
Regex = ^(Int)(.*)\s(Bus)(.*)\s(Mach);
RegexOptions = None;
RightToLeft = false;}
私の問題は、私は元の文字列が"This is a much bigger string"
であれば、全体の正規表現は、コードから構築されたのではなく、ハードコーディングされているように、プログラムでこれを構築する方法を知らないということです。私は
let test =
splitString
|> Array.map (fun thing -> VerbEx()
|> then' thing)
|> Array.toList
で、個々の正規表現を作成することができますが、これはVerbEx()
ではなく、上記の単一VerbEx()
のリストです。
どのようにプログラムでFsVerbalExpressions
でregExを構築できるか知っていますか?
ご協力いただきありがとうございます。
私はF#の '適度に新たなんだ'と*確かに*新しい書き込み折りたたみこれは非常に役に立ちます*。ありがとう! – Steven
これを少し短くすることもできます。それ以外の方法で折り返してエタを縮小することができます: 'VerbEx()|> startOfLine |> Array.foldBack(fun word - > anything >> whiteSpace >> then word)[|" Mach "; "バス"; "Int" |] ' – kaefer
@kaefer:これは、親しみやすい説明のポイントを本当に打ち破り、本当のメリットはありません。 –