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