[英]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.