在php中使用正则表达式查找关键字前的文本

在php中使用正则表达式查找关键字前的文本,php,regex,Php,Regex,我的绳子 $string = "Name : Test 123 \n req string : abc xyz 123 bla bla \n tel:234545"; 我的关键词是 $keyword = 'tel'; 现在,我需要在关键字之前找到文本。我可以找到关键字使用后的单词 $pattern = '/\btel\W*(.*)$/mi'; 但是,我需要一个模式,从中我可以找到关键字前的文本。意思是,如果我的关键字是tel,我需要获得abc xyz 123 bla bla。 我想你明

我的绳子

$string = "Name : Test 123 \n req string : abc xyz 123 bla bla \n tel:234545";
我的关键词是

$keyword = 'tel';
现在,我需要在关键字之前找到文本。我可以找到关键字使用后的单词

$pattern  = '/\btel\W*(.*)$/mi'; 
但是,我需要一个模式,从中我可以找到关键字前的文本。意思是,如果我的关键字是
tel
,我需要获得
abc xyz 123 bla bla
。 我想你明白我说的了

Note : I need only the required string. But not Name. Thats the reason, I am not using explode.
请帮我解决这个问题。
提前谢谢

展望未来,您可以使用以下正则表达式:

/(.*)(?=(tel))/
我不知道正则表达式的php特定规则,但我希望您能理解。此外,还应使用DOTALL参数包括匹配的换行符

演示:

试试这个正则表达式,然后:

([^:\r\n]+)[\r\n]+tel

[^:\r\n]+
匹配非冒号/换行符/回车


[\r\n]+
匹配换行符/回车。

为什么不在
tel
上拆分并获取结果数组的第一个元素?请检查我问题中的注释为什么不花时间写下整个问题,然后发布?您已完全更改了以下问题,以下答案将被视为无效。问题未完全更改。我编辑它是为了更好地理解这是您的第一个字符串
$string=“abc xyz 123 bla bla bla\n电话:234545”
现在您更改了整个字符串本身。这实际上不允许多行支持,您可能希望将
tel
放在单词边界内(我想可以通过OP查看)。另外,
是无意义的,
*
将始终匹配某些内容(即使此匹配是空字符串)