我有一个像这样的字符串:
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 http://rubular.com/r/uDgXcIvhac.
\s*([^:]+?)\s*:\s*(.*(?:\s*(?!.*:).*)*)\s*
请注意,我使用了否定的前瞻断言,(?!.*:)
。这是您可以检查下一行是否看起来像新字段并同时从中断处继续的唯一方法。 (这就是为什么前向和后向被称为零宽度断言。)
编辑:删除了有关任意宽度前瞻的位;我误解了。上面的解决方案很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)