【发布时间】:2016-08-19 15:01:26
【问题描述】:
在 Eloquent JavaScript chapter 9: Regular Expressions 的“解析 INI 文件”部分下,有一个示例,其中包含一个我完全不明白的正则表达式。作者正在尝试解析下一个内容:
searchengine=http://www.google.com/search?q=$1
spitefulness=9.7
; comments are preceded by a semicolon...
; each section concerns an individual enemy
[larry]
fullname=Larry Doe
type=kindergarten bully
website=http://www.geocities.com/CapeCanaveral/11451
[gargamel]
fullname=Gargamel
type=evil sorcerer
outputdir=/home/marijn/enemies/gargamel
关于这种格式的规则说明
空白行和以分号开头的行将被忽略。
解析此内容的代码会遍历文件中的每一行。为了处理 cmets,他包含了这个表达式
^\s*(;.*)?
据我了解,这个表达式处理行可能以一系列
开头空白字符,包括空格、制表符、换页符、换行符和 其他 Unicode 空间
(source) 直到它出现一个分号 ; 然后是一系列 "除行终止符之外的任何单个字符:\n、\r、\u2028 或 \u2029 .”。所有这些都仅限于 {0,1} 次出现。
我不明白量词 ? 的意义。我找不到 (regex101) 任何不限制匹配字符串的出现可能是问题的情况。为什么这个表达与另一个不同:
^\s*(;.*)
提前致谢。
【问题讨论】:
标签: javascript regex quantifiers