正则表达式匹配所有引号但不是当行以斜杠开头

regex match all in quote but not when line start with slashes

PHP 中的正则表达式与 preg_replace()。
匹配引号中的所有内容,但不匹配以斜杠开头的行

源代码:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej "jejeooe" kekek "jilnana" jennbeb

需要的结果:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej <span class="red">"jejeooe"</span> kekek <span class="red">"jilnana"</span> jennbeb

我的正则表达式只匹配引号中的最后一个。我将用外部 Span 替换所有引号,包括引号,但不替换注释行中的所有引号。

我的正则表达式:

'/^((?!\/\/).*)(".*")/m'

我的替换:

'<span class="red"></span>'

我的结果:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej "jejeooe" kekek <span class="red">"jilnana"</span> jennbeb

您的锚点成功了,因此您的搜索从字符串的开头开始,然后继续。我会使用 PCRE 动词跳过任何以 //s 开头的行。

^\/\/.*(*SKIP)(*FAIL)|("[^"]+")

那你就可以替换成

<span class="red"></span>

https://regex101.com/r/bLkctu/1/

对于实体化值:

^\/\/.*(*SKIP)(*FAIL)|(&quot;.*?&quot;)

https://regex101.com/r/bLkctu/2/