PHP前端开发

如何用正则表达式匹配包含单引号或双引号的字符串,但排除双引号中的内容?

百变鹏仔 3天前 #PHP
文章标签 双引号

要匹配任意字符但排除某个字符,可以使用字符类和否定符。

现有的正则表达式将匹配包含引号或单引号中的任何字符。但是,您希望排除双引号。为此,可以使用否定字符类:

`

<br>$pattern = "/<img .<em alt="如何用正则表达式匹配包含单引号或双引号的字符串,但排除双引号中的内容?" >src=['"](.</em>?)(<em>SKIP)(</em>F)|/?>/i";<br>
`

否定字符类 [!双引号] 匹配除双引号之外的任何字符。它被包裹在原子组中 (),以便 *SKIP 和 *F 修饰符只应用于否定字符类。*SKIP 修饰符跳过匹配否定字符类的部分,而 *F 尝试匹配它的右侧文本,从而有效地忽略双引号。

因此,修改后的正则表达式应该可以匹配带有或不带有引号的图像源。

补充说明:其他语言中,1 可能需要写成 。此外,也可以使用非捕获组 (?:...) 来排除源部分进行捕获,如示例中所示。