我正在尝试使用下面的ParseKit添加符号标记:
[t.symbolState add:@"<p style=\"margin-left: 20px;\">"];
我想知道ParseKit在添加符号时是否允许使用通配符,例如:
[t.symbolState add:@"<p style=\"margin-left: ##px;\">"];
我希望能够在解析过程中从令牌中提取通配符。
ParseKit可以做到这一点吗?
答案 0 :(得分:1)
ParseKit的开发人员。
我认为以这种方式使用ParseKit并不是一个好主意。
ParseKit(及其后继者PEGKit)擅长于令牌化输入,然后解析令牌级别。
您提供的示例输入中有几个自然标记,但您在此处尝试执行的操作是忽略这些自然标记,将它们组合成一个输入blob,然后使用模式进行奇特的子标记匹配。
有一种流行的,功能强大的工具,用于使用模式进行花式子令牌匹配:正则表达式。对于那种比PEGKit更好的解决方案,它们将是更好的解决方案。
但是,我仍然认为正则表达式不是您想要在这里使用的工具(或者,至少不是唯一的工具)。
看起来您想要解析XML输入。不要使用正则表达式或PEGKit。 使用XML解析器。始终使用XML解析器来解析XML输入。
您可以选择在XML Parser(SAX,StAX,DOM,XSLT,XQuery等)之上使用另一个XML API,但是,在它之下,您应该使用XML解析器进行解析(以及当然,我列出的所有工具都可以。)
然后,一旦获得了正在查找的style
属性字符串值,请使用Regex进行奇特的模式匹配。