Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要一个使用PHP的正则表达式吗_Php_Regex - Fatal编程技术网

需要一个使用PHP的正则表达式吗

需要一个使用PHP的正则表达式吗,php,regex,Php,Regex,我有这段xml <condition name="gender" value="male"> <condition name="somethingelse" value="somevalue">Target string</condition> </condition> 目标字符串 您可以看到这些是嵌套的 我需要做的是获取包含“目标字符串”的中间条件 人们可能会建议使用xml解析器之类的东西,但我想使用正则表达式 我和一个regex混

我有这段xml

<condition name="gender" value="male">
    <condition name="somethingelse" value="somevalue">Target string</condition>
</condition>

目标字符串
您可以看到这些是嵌套的

我需要做的是获取包含“目标字符串”的中间条件


人们可能会建议使用xml解析器之类的东西,但我想使用正则表达式

我和一个regex混在一起,但我对他们还不够了解

以此为例

$regex = '<condition name="[a-z0-9]+" value="[a-z0-9]+">([^<>].*?)<\/condition>';
preg_match_all ( '/' . $regex . '/i', $haystack, $stuff );
$regex='([^].*);
preg_match_all('/'.$regex'/i',$haystack,$stuff);
我试图做的是匹配标签,但忽略任何包含<或>的内容,从而避免任何不包含文本的内容

我的例子不起作用,它只是为了说明我到了哪里,现在我被卡住了

它所做的只是提供了这场比赛,所以我在这一方面做到了:

<condition name="gender" value="male"> <condition name="somethingelse" value="somevalue">Target string</condition>
目标字符串

有人能帮忙吗?

这里有一个正则表达式可以工作(至少在您上面概述的简单用例中):

$regex='/([^]*)/;

请注意,我删除了问号(不确定它的用途),并将星号放在
[^]
后面,而不是后面加句号。字符串
[^]*
表示匹配不在集合{}中的零个或多个字符。

如果您知道您实际上有XML,您是如何得出使用正则表达式的结论的?“人们可能会建议使用XML解析器或其他东西,但我想使用正则表达式。”为什么?这是一个学习练习吗?是的,它描述了一个算法——如果我使用XML解析器,我会丢失我需要的部分数据。
$regex = '/<condition name="[a-z0-9]+" value="[a-z0-9]+">([^<>]*)<\/condition>/';