2017-08-11 25 views
-2
echo "lineabc" | grep -oP '\w+?(?!abc\b)' 
l 
i 
n 
ea 
b 
c 

爲什麼結果中包含這麼多行?
這是什麼結果呢?
'\w+?(?!abc\b)'這是什麼意思?爲什麼multipl輸出行爲grep

+2

[參考 - 這是什麼正則表達式?](https://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean) –

+0

'\ w +?(?! abc \ b)'匹配1+個字符,儘可能少,不跟隨'abc'和字邊界。見[這裏](https://regex101.com/r/ixzHus/2)。這意味着它一次匹配1個字符,如果在該字符之後沒有'abc'。 –

+0

你想匹配什麼?請重新說明這個問題,以免它聽起來像是一個提到的重複。 –

回答

-1

/\ W +?(?ABC \ B)/克

\ W +?任何字字符(等於[A-ZA-Z0-9_])

+匹配?量化器 - 匹配一次和無限次,儘可能少的次數,根據需要擴展(懶惰)

負面超前(?!abc \ b)斷言下面的正則表達式不匹配 abc字面上匹配字符abc區分大小寫)

\ b斷言位置在單詞邊界(^ \ W | \ W $ | \ W \ W | \ W \ W)

全球格局的標誌 摹修改:全球。所有的比賽(第一場比賽後不返回)

+0

我已經提供了鏈接到regex101演示與此解釋。 OP的任何問題都不是解決方案,但沒有透露。 –

0

您使用的grep的-o選項,如果你看過手冊頁來了解這是什麼選項做,你會明白爲什麼還有多行輸出:

-o, --only-matching 
       Print only the matched (non-empty) parts of a matching 
       line, with each such part on a separate output line.