如何在编写解析器时处理字符串中的引号?

时间:2014-06-06 14:49:43

标签: php string parsing

示例:

"abcdef\"gh"

解析器规范声明该字符串以"开头,以"结尾。但它也应该忽略像\"

这样的转义引号

编写解析器时,处理这种情况的最佳方法是什么?

我想要回顾一下,如果前一个字符是\,我就会忽略这句话。但这是最好的方法吗?因为它对我来说似乎有点可疑

1 个答案:

答案 0 :(得分:1)

可以向后扫描,但很棘手,因为您可能有一些转义字符序列:

"This is a backslash: \"\\\""

向前解析通常比向后解析更容易。一个简单的正则表达式将双引号字符串的内容与转义匹配:

([^"]|\\.)*

但这只会帮助您识别字符串的内容。在实践中,您通常希望解释字符串的内容,其中可能包括将\n更改为换行符,甚至将\u00D1更改为utf-等转换。 8 Ñ的序列(C3 91)。