0

何らかの理由で、遅延マッチングを使用できません。

ここにテキストがあります -

 806 ?        Ss     0:00 /usr/sbin/apache2 -k start
  823 ?        S      0:00  \_ /usr/sbin/apache2 -k start
  824 ?        S      0:00  \_ /usr/sbin/apache2 -k start
  825 ?        S      0:00  \_ /usr/sbin/apache2 -k start
  826 ?        S      0:00  \_ /usr/sbin/apache2 -k start
  827 ?        S      0:00  \_ /usr/sbin/apache2 -k start

そして、「apache2」を含む最初の行のみに一致させたい

806 ?        Ss     0:00 /usr/sbin/apache2 -k start

私の正規表現は次のようになります-

(apache)?

しかし、それは機能していないようです-すべてのインスタンスに一致します。どうしたの?

4

1 に答える 1

1

正規表現(apache)?は、ほぼ「apacheに一致するか、apacheに一致しない」ことを意味するため、明らかにすべてに一致します。

使用しているプログラミング言語または正規表現フレーバーを指定しませんでしたが、この正規表現はapacheという単語を含む行全体に一致します。

.*apache.*

もちろん、これはapacheという単語を含むすべての行に一致するため、使用しているプログラミング言語を使用して最初の一致のみを取得するのはあなた次第です。

注:選択した正規表現フレーバーが改行とドットを一致させる場合は、次のように、複数行モードにして、行の開始アンカーと行の終了アンカーを追加する必要があります。

^.*apache.*$

(そして、マルチラインモードをオンにすることを忘れないでください!)

于 2012-08-10T10:31:03.817 に答える