繁体   English   中英

正则表达式多次匹配多行

[英]Regex matching multiple lines multiple times

我有一个像这样的字符串:

Name: John Doe

Age: 23

Primary Language: English

Description: This is a multiline
description field that I want 
to capture

Country: Canada

那不是实际数据,但是您可以看到我正在尝试做的事情。 我想使用正则表达式来获取“键”字段(名称,年龄,主要语言,描述,国家/地区)及其值的数组。

我正在使用PHP。

我目前的尝试是这样,但是不起作用:

preg_match( '/^(.*?\:) (.*?)(\n.*?\:)/ism', $text, $matches );

这是一种解决方案: http : //rubular.com/r/uDgXcIvhac

    \s*([^:]+?)\s*:\s*(.*(?:\s*(?!.*:).*)*)\s*

请注意,我使用了否定的超前断言(?!.*:) look like a new field, and at the same time continue where you left off. 这是你可以检查下一行看起来像一个新的领域的唯一途径,而在同一时间继续你离开的地方。 assertions.) (这就是为什么先行和后行被称为断言。)

编辑:删除了有关任意宽度前行的位; 我误解了。 上述解决方案很好。

PHP的strtok会为您提供帮助吗? 您可以将其与“:”一起用作分隔符/令牌,并修剪前导和尾随空格以删除不需要的新行。

http://php.net/manual/zh/function.strtok.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM