0

pingの後に出力を取得するスクリプトがあります。出力は次のようになります。

var input = "PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.065 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.073 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.065 ms

--- localhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.065/0.067/0.073/0.010 ms"

私は最初に、送信されたパケットの数を取得しようとしていました。だから私はこの正規表現で試しました:(\ d +)* \ spackets

基本的に「NUMBERパケット」と一致させるには、次のサイトで機能するようです:http: //www.regular-expressions.info/javascriptexample.htmlですが、複製できません。

また、matchで正規表現を使用すると、次のように失敗します。

"42 packets".match('(\d+)*\spackets');

何か案は?

4

2 に答える 2

3

Javascript正規表現は、引用符ではなくRegExpオブジェクトを示すために、スラッシュ区切り文字で囲む必要があります。

"42 packets".match(/(\d+)\spackets/);

これは次の略語です。

"42 packets".match(new RegExp('(\d+)\spackets'));
于 2011-07-22T21:07:21.207 に答える
2

match文字列ではなく、正規表現オブジェクトを取ります。

"42 packets".match(/(\d+)\spackets/);

*さらに、 -\d+は1つ以上の数字に一致する必要はありません。したがって、1つ以上の整数の0個以上のグループを探すことは、あなたの場合は冗長です。そして実際には、1つ以上の整数の0*以上のグループを持つことができることを意味します...これは、Paulが指摘するように、単独で一致する可能性があることを意味します。packets

于 2011-07-22T21:08:19.407 に答える