簡體   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