2017-03-29 98 views
1

我想用引号将字/子串CODE作为字符串的一部分进行匹配。例如:用引号括起来的字符串的子串的正则表达式

text "bla CODE bla" text <- match 'CODE' 
text "MYCODE" text <- match 'CODE' 
"test_CODE_bla" text <- match 'CODE' 
text CODE "text" <- no match 

(?<=")(.*)CODE(.*)(?=")整个字符串在引号,不只是文字CODE匹配。 但类似(?<=".*)CODE(?=.*")不起作用。我的错误在哪里? 我正在使用记事本++搜索&替换为Boost RegEx(有点类似Perl语法!?)。

链接:https://regex101.com/r/zkfRMC/1

任何帮助表示赞赏。

+0

事情是[本](https://regex101.com/r/zSe1PC/1)? –

+0

什么是您正在使用的正则表达式引擎? 。净? –

+0

@WiktorStribiżew:我使用的是使用Perl Regex的Notepad ++。 – mh333

回答

1

它是每行一个带引号的字符串,没有嵌套的引号。

您可以使用

"[^"\n]*\KCODE(?=[^"\n]*") 

甚至

".*?\KCODE(?=.*") 

regex demo

详细

  • " - 字面双引号
  • [^"\n]* - 0+字符比"其他与LF
  • \K - 匹配复位操作丢弃所有的文本匹配至今
  • CODE - 你需要的子
  • (?=[^"\n]*") - 有必须是"和LF之外的0+字符,然后在当前位置后立即输入"

enter image description here

+0

作品完美无瑕,谢谢。如果没有多少努力,那么您可以自由地为每行包含多个带引号的字符串提供解决方案 - 适用于所有通过Google来到这里的人。没有压力虽然:) – mh333

+0

这并不容易,而且很容易出现问题。 –

相关问题