[英]Quick regex grep/perl/php
I have this text: 我有这段文字:
2015-03-11 10:15 - anonymous logged in to [127.0.0.1] on account 1DEYKqtPtAEt5hDfiAlz7SdFEGUSPguxGu using key uembzzQdgFHq9k0UJfEi4Dnkvc7n3N5tWVNRQmKfZpeJPnyzKVzKSVVsvLGL6bY 0.2379845 BTC were transferred to address 1cRa5v0Nxu9ABkkzlTv4dzsyRf0hOkg27N using key 1zM9nBd1PNu1FF7qKr1t9Y4m0TawPa3ZQJ1LrlvtViCiB2aFjgn8BIHWG2VHjJvV
and I'm trying to extract the pseudo BTC account and the matching key. 我正在尝试提取伪BTC帐户和匹配密钥。 The text is not regular like the apache logs, so you could have a really long line with 5 or 10 addresses or a single line with the same info.
文本不像apache日志那样规则,因此您可能会有一行很长的行,其中包含5个或10个地址,或者一行中包含相同的信息。 Now how do I match the pseudo BTC account and it's matching key, from the "logged in" and "transferred" part, even if there are a many occurrences in one line?
现在,即使一行中出现多次,如何从“登录”和“转移”部分匹配伪BTC帐户及其匹配密钥?
I have tried this: 我已经试过了:
function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
$parsed = get_string_between($fullstring, "account", "using");
which gets me the address but not the matching key. 这会给我地址而不是匹配的密钥。 I would like to parse the text either using grep, perl or php.
我想使用grep,perl或php解析文本。 whatever works easier.
任何更容易的工作。 I have been trying with php since I'm at least familiar with the language.
我一直在尝试php,因为我至少对这种语言很熟悉。
any ideas? 有任何想法吗? I appreciate all your help
感谢您的帮助
You need to use capturing group based regex in preg_match_all function. 您需要在preg_match_all函数中使用基于捕获组的正则表达式。
$str = "2015-03-11 10:15 - anonymous logged in to [127.0.0.1] on account 1DEYKqtPtAEt5hDfiAlz7SdFEGUSPguxGu using key uembzzQdgFHq9k0UJfEi4Dnkvc7n3N5tWVNRQmKfZpeJPnyzKVzKSVVsvLGL6bY 0.2379845 BTC were transferred to address 1cRa5v0Nxu9ABkkzlTv4dzsyRf0hOkg27N using key 1zM9nBd1PNu1FF7qKr1t9Y4m0TawPa3ZQJ1LrlvtViCiB2aFjgn8BIHWG2VHjJvV";
preg_match_all('~(?:account|address)\s+(\S+)\s+using\s+key\s+(\S+)~m', $str, $match);
print_r($match[1]);
print_r($match[2]);
Output: 输出:
Array
(
[0] => 1DEYKqtPtAEt5hDfiAlz7SdFEGUSPguxGu
[1] => 1cRa5v0Nxu9ABkkzlTv4dzsyRf0hOkg27N
)
Array
(
[0] => uembzzQdgFHq9k0UJfEi4Dnkvc7n3N5tWVNRQmKfZpeJPnyzKVzKSVVsvLGL6bY
[1] => 1zM9nBd1PNu1FF7qKr1t9Y4m0TawPa3ZQJ1LrlvtViCiB2aFjgn8BIHWG2VHjJvV
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.