preg_match返回unlnown修饰符

时间:2015-09-26 19:15:54

标签: php regex

抱歉,我是php的新手。我正在尝试匹配字符串中的模式,但无论我做什么,我都没有得到匹配。我想我做错了。此外,有时我收到'未知修饰'错误。这是主题字符串:

<soap:envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:body>
<sendtransactionsactionresponse xmlns="http://tempuri.org/">
<sendtransactionsactionresult>113</sendtransactionsactionresult>
</sendtransactionsactionresponse>
</soap:body>
</soap:envelope>  

我正在尝试匹配整个<sendtransactionsactionresult>XXX</sendtransactionsactionresult>模式,其中XXX是3位数字字符。以下是我到目前为止尝试过的模式:

@<sendtransactionsactionresult>[0-9]<\/sendtransactionsactionresult>@i
/<sendtransactionsactionresult>[0-9]<\/sendtransactionsactionresult>/
@(\<[a-z]\>[0-9]\<\/[a-z]\>)@i
/<[a-z]>[0-9]</[a-z]>/
and many many more..  

他们都不匹配......我做错了什么?

1 个答案:

答案 0 :(得分:1)

您缺少角色类的量词。

[0-9]只会匹配一位数字。要匹配一个或多个,您需要使用[0-9]+

@<sendtransactionsactionresult>[0-9]+</sendtransactionsactionresult>@i
/<sendtransactionsactionresult>[0-9]+<\/sendtransactionsactionresult>/
@(<[a-z]+>[0-9]+</[a-z]+>)@i
/<[a-z]+>[0-9]+<\/[a-z]+>/

另外:/如果您还将其用作分隔符,则只需要进行转义。 /...\/.../ vs @.../...@