Noo*_*r_1 9 javascript regex quantifiers
在Eloquent JavaScript 第9章:正则表达式下的" 解析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
Run Code Online (Sandbox Code Playgroud)
关于这种格式的规则说明
以分号开头的空行和行将被忽略.
解析此内容的代码遍历文件中的每一行.为了处理评论,他包括了这个表达式
^\s*(;.*)?
Run Code Online (Sandbox Code Playgroud)
据我所知,这个表达式可以从一系列序列开始
空格字符,包括空格,制表符,换页符,换行符和其他Unicode空格
(来源),直到它出现一个分号; 然后是一系列" 除行终止符之外的任何单个字符:\n,\ r,\ u2028或\ u2029. ".所有这些仅限于{0,1}出场.
我没有得到量词的观点?这里.我无法找到(regex101)任何不限制匹配字符串外观的情况都是个问题.为什么表达式与另一个表达式不同:
^\s*(;.*)
Run Code Online (Sandbox Code Playgroud)
提前致谢.
的^\s*(;.*)要求;,它不能匹配一个空行.
该^\s*(;.*)?可以匹配空行,它不需要;.
常见的部分是^\s*- 行(或字符串)的开头,然后是零或更多的空格.
然后1)(;.*)匹配一个;(1个实例必须)然后(;.*)?匹配除换行之外的零个或多个字符,并且2)匹配一个可选序列((...)?因为它?是一个量化器,匹配量化原子的一个或零个出现,而原子可以是一个符号,一个字符类,一个组,;后面跟着一个换行符以外的0+个字符.
另外,请注意\s匹配LF和CR符号,这意味着(如果MULTILINE修饰符为ON且输入是包含多行的文本),正则表达式^\s*可以跨多行匹配,直到第一个非空白字符.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |