在Notepad ++中只保留引号之间的字符串

时间:2014-05-09 20:36:31

标签: regex notepad++

在Notepad ++中,我使用表达式(?<=").*(?=")来查找引号之间的所有字符串。能够仅保留这些结果似乎相当微不足道。但是,我找不到一个简单的解决方案。

我认为问题在于Notepad ++无法进行多项选择。但必须有某种解决方法,对吧?也许我必须反转正则表达式,然后找到/替换这些结果,最终得到我想要的字符串。

例如:

blablabla "Important" blabla
blabla "Again important" blablabla

我想保留:

Important
Again important

3 个答案:

答案 0 :(得分:6)

没有很好的解决方案,根据您的使用情况,我建议编写一个实际使用您的第一个表达式的快速脚本,并创建一个包含所有匹配项的新文件(或类似的东西)。但是,如果你只想要快速而又脏的东西,this expression应该让你开始:

[^"]*(?:"([^"]*)")? 
\1\n

<强>解释

[^"]*         # 0+ non-" characters
(?:           # Start non-capturing group
  "           # " literally
    (         # Start capturing group
      [^"]*   # 0+ non-" characters
    )         # End capturing group
  "           # " literally
)?            # End non-capturing group AND make it optional

使用可选的非捕获组的原因是因为文件的末尾很可能没有引号中的字符串,所以这不是必要的匹配(我们对第一个{{1更感兴趣我们要删除的。)

答案 1 :(得分:2)

很难从你的帖子中确定,但我认为你可能需要见下文

<(?<=")(.*)(?=") 

您保留的部分将被捕获为\2

(?<=")(.*)(?=")
  \1   \2  \3

您的原始正则表达式字符串使用括号将字符分组以进行评估。圆括号ALSO组字符用于捕获。这就是我添加的内容。

更新

您提供的正则表达式模式似乎无法正常工作。这不行吗?

\"(.*)\"

\1现在可以捕获内容。

答案 2 :(得分:2)

尝试这样的事情:

[^"\r\n]+"([^"]+)"[^"\r\n]+

并替换为$1。上面的正则表达式假设每行只有2个双引号。

[^"]+匹配非引号字符。

[^"\r\n]+匹配非引号,非换行符。

regex101 demo