0

我有一个字符串,我需要搜索这个字符串并能够将地址详细信息分配给一个变量:

它在字符串中的外观:

infoone:"infoone"infotwo:"infotwo"address:"123 fake street pretend land"infothree:"infothree"infofour:"infofour" address:"345 fake street pretend land"infofive: "infofive"infosix: "infosix"

我将如何使用正则表达式来搜索这个字符串,以仅在单词地址之后提取反逗号中的数据,?

注意:我不能定位短语“123 fake street fake land”,因为这只是使用引号中可能出现的内容的示例。

4

3 回答 3

2

这是一个很好的正则表达式

^address:"([^"]*)

这就是 php 中的选项,以便 ^ 在行的开头匹配,我们取出第 1 组

preg_match_all('/^address:"([^"]*)/m', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[1];

更新 1

preg_match_all('/^address:"([^"]*)/m', $subject, $result, PREG_SET_ORDER);
for ($matchi = 0; $matchi < count($result); $matchi++) {
    for ($backrefi = 0; $backrefi < count($result[$matchi]); $backrefi++) {
        # Matched text = $result[$matchi][$backrefi];
    } 
}

更新 2

使用新的样本输入,只需在开头的 ^ 处留下,这样它就变成了

address:"([^"]*)
于 2012-06-06T11:10:09.450 回答
1

好吧,正则表达式本身就是^address:"(.*)"$.

显然,您需要添加相关preg_match()调用。

于 2012-06-06T11:06:26.413 回答
1

使用这个正则表达式

$str='infoone:"infoone"infotwo:"infotwo"address:"123 fake street pretend land"infothree:"infothree"infofour:"infofour" address:"345 fake street pretend land"infofive: "infofive"infosix: "infosix"';

preg_match_all("/address:\"(.*)\"/siU",$str,$out);
print_r($out[1]);
于 2012-06-06T11:55:10.663 回答