Php 正则表达式不返回propper匹配项
我目前在PHP服务器上的正则表达式遇到一些问题 这是我目前常用的表达方式:Php 正则表达式不返回propper匹配项,php,regex,string,Php,Regex,String,我目前在PHP服务器上的正则表达式遇到一些问题 这是我目前常用的表达方式: /\{content="(?:([^"\|]*)\|?)+"\}/ 我希望它能匹配: {content="default|test|content|text"} 然后在匹配项中返回: default test content text 但当我当前执行它时,我会在我的比赛中得到: array ( 0 => '{content="default|test|content|text"}', 1 =>
/\{content="(?:([^"\|]*)\|?)+"\}/
我希望它能匹配:
{content="default|test|content|text"}
然后在匹配项中返回:
default
test
content
text
但当我当前执行它时,我会在我的比赛中得到:
array (
0 => '{content="default|test|content|text"}',
1 => '',
)
你们有谁对我做错了什么有意见吗
致以亲切的问候
Youri Arktesteijn我不知道使用一行正则表达式怎么可能。无论如何,请尝试以下代码
<?php
if (preg_match('/\{content="(?:([^\"]+))"\}/', $sContent, $matches) > 0) {
$result = explode('|', $matches[1]);
} else {
$result = array();
}
echo '<pre>' . print_r($result, true) . '</pre>';
?>
我不知道使用一行正则表达式怎么可能。无论如何,请尝试以下代码
<?php
if (preg_match('/\{content="(?:([^\"]+))"\}/', $sContent, $matches) > 0) {
$result = explode('|', $matches[1]);
} else {
$result = array();
}
echo '<pre>' . print_r($result, true) . '</pre>';
?>
您可以使用正面lookaheads和正面lookbehinds。
三个阶段:
我们匹配开始的报价,但在输出中没有捕捉到它。然后我们匹配任何不是管道的东西。然后我们匹配一根管子,但没有接住它
管道之间的非管道
管道和引号之间的非管道和非引号
这是密码
Array
(
[0] => default
[1] => test
[2] => content
[3] => text
)
一旦逻辑正常工作,就可以将前视字符和后视字符配对以缩短匹配字符串
Array
(
[0] => default
[1] => test
[2] => content
[3] => text
)
您可以使用正面lookaheads和正面lookbehinds。
三个阶段:
我们匹配开始的报价,但在输出中没有捕捉到它。然后我们匹配任何不是管道的东西。然后我们匹配一根管子,但没有接住它
管道之间的非管道
管道和引号之间的非管道和非引号
这是密码
Array
(
[0] => default
[1] => test
[2] => content
[3] => text
)
一旦逻辑正常工作,就可以将前视字符和后视字符配对以缩短匹配字符串
Array
(
[0] => default
[1] => test
[2] => content
[3] => text
)
请定义“我当前执行”。你是如何执行的,你使用的是哪个函数请定义“我当前执行”。你是如何执行的,你使用的是哪个函数等等。你是如何执行的,你使用的是哪个函数,等等,尽管我很讨厌它,但我认为这是唯一的解决办法。