[英]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会为您提供帮助吗? 您可以将其与“:”一起用作分隔符/令牌,并修剪前导和尾随空格以删除不需要的新行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.