【问题标题】:Regular Expression - Reverse Pattern Searching正则表达式 - 反向模式搜索
【发布时间】:2014-12-28 06:14:55
【问题描述】:

有没有办法使用正则表达式来查找所有不匹配多个模式的 "。

示例: “我很难过”|“把这个“匹配”到“|10|”工作”

基本上我想替换不匹配的引号 ^" "| |" 或 "$ 所以在这种情况下,它只会替换“匹配”周围的引号

在这种特殊情况下,我正试图让我们的 VI 做到这一点。

感谢您提供的任何建议。

【问题讨论】:

  • 您希望正则表达式使用哪种语言?有些允许向后看,有些则不允许。对于python,您可以使用: r'(?
  • 我正在尝试使用VI或一些支持正则表达式的编辑器,例如Notepad++
  • 用后面的代码试试我的代码。

标签: regex search replace vi


【解决方案1】:

您可以尝试使用消极的后视和消极的前瞻:

:%s/[$|]\@<!\"[\^|]\@!//gc

编辑:我改变了方法。以下正则表达式是否足够?

:%s/\([^\^|]\)\"\([^$|]\)/\1\2/g

【讨论】:

  • 无法让它工作,通过了错误检查但没有更改值。
  • 我更新了我的正则表达式,现在它几乎可以为我工作了。我不知道如何阻止它在行首或行尾匹配引号。
  • 太棒了,这真的很有帮助。我试图交换 " 为 ' 所以我只需要在 \1'\2 之间添加一个 '
【解决方案2】:

你可以简单地使用这个 Javascript 行:

str = str.replace(/ \"match\" /g, 'match');

编辑:

function replaceSentence(mySentence, secondSentence)
{
    str = str.replace(/ mySentence /g, secondSentence);
}

示例如下:

replaceSentence("match", match);

【讨论】:

  • "match" 只是一个例子。在我的情况下,引号之间可能是多个单词或根本没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2013-05-06
  • 2014-01-23
  • 1970-01-01
相关资源
最近更新 更多