php - 如何用正則匹配出不包含某個單字(多個字符,非開頭或結尾)
習慣沉默
習慣沉默 2017-05-24 11:32:15
0
2
822

題外話: Linux 的時候看到last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l 這個,想著能不能用一次grep 就搞定,所以就想到了能不能用正規匹配某行不包含某個單字(如wtmp ),結果沒有想出來。

習慣沉默
習慣沉默

全部回覆(2)
淡淡烟草味

js
/^(?!.*wtmp)/

雷雷
为情所困

匹配出不包含, 這個難度對於正則而言應該是比較大的, 因為這個條件可能在這個位置條件成立了, 在下個位置可能就不成立! 但是正則卻會把任何滿足pattern的字符串返回
針對你題目的例子, 我建議用awk實現:

last | awk '!=wtpm&&/[A-Za-z]/{num++}END{print num}'

awk能夠提供比較靈活的邏輯處理, 可讀性也比較強, 相對於單一正則, 所以在題目中的場景, 我覺得awk是比較好的選擇,但是如果是用其他語言實現, 可能就要參考別的語言的方式了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板