Merge pull request #2378 from vsemozhetbyt/patch-9
Fix typo, clarify wording in 9.15 (Catastrophic backtracking)
This commit is contained in:
commit
4e1ab89ea0
1 changed files with 2 additions and 2 deletions
|
@ -160,7 +160,7 @@ Trying each of them is exactly the reason why the search takes so long.
|
|||
|
||||
## Back to words and strings
|
||||
|
||||
The similar thing happens in our first example, when we look words by pattern `pattern:^(\w+\s?)*$` in the string `subject:An input that hangs!`.
|
||||
The similar thing happens in our first example, when we look for words by pattern `pattern:^(\w+\s?)*$` in the string `subject:An input that hangs!`.
|
||||
|
||||
The reason is that a word can be represented as one `pattern:\w+` or many:
|
||||
|
||||
|
@ -238,7 +238,7 @@ E.g. in the regexp `pattern:(\d+)*$` it's obvious for a human, that `pattern:+`
|
|||
(1234)(56789)!
|
||||
```
|
||||
|
||||
And in the original example `pattern:^(\w+\s?)*$` we may want to forbid backtracking in `pattern:\w+`. That is: `pattern:\w+` should match a whole word, with the maximal possible length. There's no need to lower the repetitions count in `pattern:\w+`, try to split it into two words `pattern:\w+\w+` and so on.
|
||||
And in the original example `pattern:^(\w+\s?)*$` we may want to forbid backtracking in `pattern:\w+`. That is: `pattern:\w+` should match a whole word, with the maximal possible length. There's no need to lower the repetitions count in `pattern:\w+` or to split it into two words `pattern:\w+\w+` and so on.
|
||||
|
||||
Modern regular expression engines support possessive quantifiers for that. Regular quantifiers become possessive if we add `pattern:+` after them. That is, we use `pattern:\d++` instead of `pattern:\d+` to stop `pattern:+` from backtracking.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue