搜尋

首頁  >  問答  >  主體

php - 如何用正則匹配出不包含某個單字(多個字符,非開頭或結尾)

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

習慣沉默習慣沉默2744 天前823

全部回覆(2)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-05-24 11:34:15

    js
    /^(?!.*wtmp)/

    雷雷

    回覆
    0
  • 为情所困

    为情所困2017-05-24 11:34:15

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

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

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

    回覆
    0
  • 取消回覆