regex匹配所有引号,但当行以斜杠开头时不匹配

问题描述 投票:0回答:1

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'

我替换:

'$1<span class="red">$2</span>'

我的结果:

// eehen nhdhdhd ooe "jjejej" ejeje "keihjen" jehhemm
jejej "jejeooe" kekek <span class="red">"jilnana"</span> jennbeb
php regex preg-replace
1个回答
0
投票
您的锚使它如此,因此您的搜索从字符串的开头开始,然后继续。通过使用PCRE动词,我只跳过以//开头的任何行。

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

然后您可以替换为

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

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

对于实体值:

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

https://regex101.com/r/bLkctu/2/
© www.soinside.com 2019 - 2024. All rights reserved.