在正则表达式中获取模式
Getting a pattern in regex
我正在尝试捕捉以下模式:
<a href="http://cdn.xyz.com/media/info.pdf" target="_blank">
这就是我正在尝试的:
preg_match_all( '/(<[a-zA-Z]+[^>]+>)/ism', $str, $matches);
这没有捕捉到上述模式。
我应该如何重组模式。
谢谢
您可以使用基于正则表达式的否定前瞻断言。
preg_match_all('~<[a-zA-Z]+(?:(?!&[lg]t;).)*>~isg', $str, $matches);
(?:(?!&[lg]t;).)*
匹配任何字符,但不匹配 <
或 >
。也就是说,它检查要匹配的字符是否不是 <
或 >
中的起始字母。
或
<[a-zA-Z]+.*?>
(<[a-zA-Z]+.+?>)
您可以使用这个简单的 pattern.See 演示。
https://regex101.com/r/bW3aR1/14
你的正则表达式包含 [^>]+
这不是你 think.It 只是一个 class 字符不应该 appear.The 这里没有定义顺序。
我正在尝试捕捉以下模式:
<a href="http://cdn.xyz.com/media/info.pdf" target="_blank">
这就是我正在尝试的:
preg_match_all( '/(<[a-zA-Z]+[^>]+>)/ism', $str, $matches);
这没有捕捉到上述模式。
我应该如何重组模式。
谢谢
您可以使用基于正则表达式的否定前瞻断言。
preg_match_all('~<[a-zA-Z]+(?:(?!&[lg]t;).)*>~isg', $str, $matches);
(?:(?!&[lg]t;).)*
匹配任何字符,但不匹配 <
或 >
。也就是说,它检查要匹配的字符是否不是 <
或 >
中的起始字母。
或
<[a-zA-Z]+.*?>
(<[a-zA-Z]+.+?>)
您可以使用这个简单的 pattern.See 演示。
https://regex101.com/r/bW3aR1/14
你的正则表达式包含 [^>]+
这不是你 think.It 只是一个 class 字符不应该 appear.The 这里没有定义顺序。