preg_match php在两个搜索参数之间返回文本

preg_match php在两个搜索参数之间返回文本,php,preg-match,Php,Preg Match,如果这是重复的,我很抱歉,但是经过几个小时的搜索后,我在谷歌上找不到任何东西,我对字符串操作非常陌生,也不知道找到我想要的信息的正确术语 基本上我是在操纵这根弦 Date Time Name IP UniqueID $line = 02.12.2013 16:00:03: Connor Bergolio (75.13.15.229:5557) fcfd6ba862c7461a88e2b13babc691

如果这是重复的,我很抱歉,但是经过几个小时的搜索后,我在谷歌上找不到任何东西,我对字符串操作非常陌生,也不知道找到我想要的信息的正确术语

基本上我是在操纵这根弦

        Date       Time      Name             IP                 UniqueID
$line = 02.12.2013 16:00:03: Connor Bergolio (75.13.15.229:5557) fcfd6ba862c7461a88e2b13babc691dd
所以我试着检索这个名字,但是因为他们可以选择任何他们想要的名字,它可能有1个空格或10个空格,所以爆炸是不可能的

现在我想知道是否可以使用2个变量运行pregmatch。这将返回之间的信息

$pattern1 = '$time, $ip';
preg_match($pattern1, $line, $name);
看这一点,它的方式,但我几乎不知所措

我使用“$IPpattern=”/([0-9-():)]{19,23})/”; 为了获得IP,也许可以用它和一起寻找时间


提前感谢`

我正在使用此正则表达式检索名称:

 /[\d{2}.]{2}\d{4}\s(\d{2}:){3}\s(.+)(\s\(.+)/

,第二个结果是您的姓名。

我正在使用此正则表达式检索姓名:

 /[\d{2}.]{2}\d{4}\s(\d{2}:){3}\s(.+)(\s\(.+)/

,第二个结果是您的名字。

以下模式将起作用:

preg_match('/^(.{19}): (.+?) +\(([0-9:.]+)\) ([a-f0-9]+)$/', $line, $matches);
$date = $matches[1];
$name = $matches[2];
$ip = $matches[3];
$uniqueId = $matches[4];

以下模式将起作用:

preg_match('/^(.{19}): (.+?) +\(([0-9:.]+)\) ([a-f0-9]+)$/', $line, $matches);
$date = $matches[1];
$name = $matches[2];
$ip = $matches[3];
$uniqueId = $matches[4];

由于不知道用户名允许使用的有效字符,或者不知道管理
日期
时间
字段格式的任何规则,以下操作应该有效:

.*(?:\d\d:){3}\s*\K.+(?=\s?\()
解释
*(?:\d\d:){3}\s*\K
-将所有内容匹配到
时间
字段,然后将其与
\K

+(?=\s?\()
-将任何内容匹配一次或多次,但不包括找到的第一个括号


但这并不高效:(

不知道用户名允许使用的有效字符,或者不知道管理
日期
时间
字段格式的任何规则,以下操作应该有效:

.*(?:\d\d:){3}\s*\K.+(?=\s?\()
解释
*(?:\d\d:){3}\s*\K
-将所有内容匹配到
时间
字段,然后将其与
\K

+(?=\s?\()
-将任何内容匹配一次或多次,但不包括找到的第一个括号


但它的效率不高:(

非常感谢您提供的工具,它看起来非常有趣,我将能够很好地使用它来帮助实现未来的功能。很难选择,但由于工具的原因。我必须选择这个:)谢谢大家,谢谢你这么多的工具,它看起来非常有趣,我将能够很好地使用它,以帮助未来的功能。这是很难选择,但由于该工具。我必须选择这个:)谢谢大家