Skip to content

Commit 4b98a2c

Browse files
committed
docs(stdlib/regex): edit 贪婪模式
1 parent 3f8e88a commit 4b98a2c

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

docs/stdlib/regexp.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ var html = "<b>Hello</b>\n<i>world!</i>";
694694

695695
### 贪婪模式
696696

697-
上一小节的三个量词符,默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止。这被称为贪婪模式。
697+
上一小节的三个量词符,默认情况下都是最大可能匹配,即匹配到下一个字符不满足匹配规则为止。这被称为贪婪模式。
698698

699699
```javascript
700700
var s = 'aaa';
@@ -703,29 +703,31 @@ s.match(/a+/) // ["aaa"]
703703

704704
上面代码中,模式是`/a+/`,表示匹配1个`a`或多个`a`,那么到底会匹配几个`a`呢?因为默认是贪婪模式,会一直匹配到字符`a`不出现为止,所以匹配结果是3个`a`
705705

706-
如果想将贪婪模式改为非贪婪模式,可以在量词符后面加一个问号。
706+
除了贪婪模式,还有非贪婪模式,即最小可能匹配。只要一发现匹配,就返回结果,不要往下检查。如果想将贪婪模式改为非贪婪模式,可以在量词符后面加一个问号。
707707

708708
```javascript
709709
var s = 'aaa';
710710
s.match(/a+?/) // ["a"]
711711
```
712712

713-
上面代码中,模式结尾添加了一个问号`/a+?/`,这时就改为非贪婪模式,一旦条件满足,就不再往下匹配。
713+
上面例子中,模式结尾添加了一个问号`/a+?/`,这时就改为非贪婪模式,一旦条件满足,就不再往下匹配`+?`表示只要发现一个`a`,就不再往下匹配了
714714

715-
除了非贪婪模式的加号,还有非贪婪模式的星号(`*`)和非贪婪模式的问号(`?`)。
715+
除了非贪婪模式的加号`+?`,还有非贪婪模式的星号(`*?`)和非贪婪模式的问号(`??`)。
716716

717717
- `+?`:表示某个模式出现1次或多次,匹配时采用非贪婪模式。
718718
- `*?`:表示某个模式出现0次或多次,匹配时采用非贪婪模式。
719719
- `??`:表格某个模式出现0次或1次,匹配时采用非贪婪模式。
720720

721721
```javascript
722-
'abb'.match(/ab*b/) // ["abb"]
723-
'abb'.match(/ab*?b/) // ["ab"]
722+
'abb'.match(/ab*/) // ["abb"]
723+
'abb'.match(/ab*?/) // ["a"]
724724

725-
'abb'.match(/ab?b/) // ["abb"]
726-
'abb'.match(/ab??b/) // ["ab"]
725+
'abb'.match(/ab?/) // ["ab"]
726+
'abb'.match(/ab??/) // ["a"]
727727
```
728728

729+
上面例子中,`/ab*/`表示如果`a`后面有多个`b`,那么匹配尽可能多的`b``/ab*?/`表示匹配尽可能少的`b`,也就是0个`b`
730+
729731
### 修饰符
730732

731733
修饰符(modifier)表示模式的附加规则,放在正则模式的最尾部。

0 commit comments

Comments
 (0)