sp0*_*00m 18 java regex string replace
而
"a".replaceAll("a", "b")
"a".replaceAll("a+", "b")
"a".replaceAll("a+?", "b")
Run Code Online (Sandbox Code Playgroud)
所有回报b,为什么呢
"a".replaceAll("a*", "b")
Run Code Online (Sandbox Code Playgroud)
回归bb和
"a".replaceAll("a*?", "b")
Run Code Online (Sandbox Code Playgroud)
回来bab?
Joh*_*rak 22
"a".replaceAll("a*", "b")
Run Code Online (Sandbox Code Playgroud)
首先替换a为b,然后将指针推进过去b.然后它匹配字符串的结尾,并替换为b.由于它匹配一个空字符串,它会使指针前进,掉出字符串,然后完成,从而产生bb.
"a".replaceAll("a*?", "b")
Run Code Online (Sandbox Code Playgroud)
首先匹配字符串的开头并替换为b.它不匹配a,因为?在a*?来"非贪婪"(匹配尽可能少).由于它匹配一个空字符串,它会使指针前进,跳过a.然后它匹配字符串的结尾,替换b和掉出字符串,导致bab.最终结果与您的结果相同"a".replaceAll("", "b").
这是因为零宽度匹配.
"a".replaceAll("a*", "b")
Run Code Online (Sandbox Code Playgroud)
将匹配两次:
*消耗a作为匹配.前进到字符串中的下一个位置(现在在字符串的末尾),尝试匹配,空字符串匹配.
" a "
\| \___ 2. match empty string
\_____ 1. match "a"
Run Code Online (Sandbox Code Playgroud)"a".replaceAll("a*?", "b")
Run Code Online (Sandbox Code Playgroud)
也将匹配两次:
*?匹配空字符串而不消耗a.前进到字符串中的下一个位置(现在在字符串的末尾),尝试匹配,空字符串匹配.
" a "
\ \___ 2. match empty string
\_____ 1. match empty string
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |