F#/。net中的Regex / CTFG
|
我想知道如何在F#中执行正则表达式或上下文无关的语法。
我有一些F#的经验,
(我从未见过/使用过主动模式,(由于时间限制,它被明确排除在课程之外)
并且我已经从python中完成了小巧的正则表达式,以及从离散数学的角度来看了正则表达式和语法。
我有点环顾四周,已经有点困惑了。
我不太清楚正则表达式的MSDN文档。
我有点失望地发现
match str with
|a + \".\" + b + \".\" + c -> Some(a,b,c)
|[] -> None
没用。
我怀疑通过主动模式可以达到这样的效果
编辑以澄清:
我想知道如何做正则表达式或上下文无关的语法
没有找到相关结果
已邀请:
5 个回复
导力疵谜
用所需的正则表达式替换
。请注意,要完全匹配,需要在正则表达式周围加
和
。 我有点失望 这是行不通的。
F#模式用于匹配和绑定嵌套的树状数据结构(代数数据类型)的某些部分,而不是字符串和常规语言,因此这是行不通的。 我怀疑这样的效果会 通过主动模式实现 是的,您可以使用主动模式在实现此效果方面大有帮助。克里斯·史密斯(Chris Smith)有一篇文章显示了详细信息(由Brian首次发布)。 http://blogs.msdn.com/b/chrsmith/archive/2008/02/22/regular-expressions-via-active-patterns.aspx 我想知道 如何做正则表达式或上下文无关 语法师或两者 ... 我弄完了 python中的alittle正则表达式 正则表达式和语法 数学的观点。 为了匹配字符串上的模式,上面显示的内置.Net正则表达式通常足够好。但是,请注意,尽管有名称,但它们并不是严格的常规规则,因为它们可以代表更大的一类语言。结果,如果您在理论上迷惑了它们,它们可能并不总是具有您可能期望的时间/空间复杂性。 (对于Perl / Python / etc也是如此) 对于CFG,这是一个完全不同的问题。来自F#PowerPack的Fsyacc(以及lexer fslex)是标准的F#LALR解析器生成器,它将与CFG的有用子类匹配。或者,您可以尝试从http://www.quanttec.com/fparsec/访问FParsec解析器组合器库。
炬卤遁蝎变
艰管垮淮
青董据零
搁手