【问题标题】:Find and Replace with Regex in Notepad++ Using Wildcards在 Notepad++ 中使用通配符查找和替换正则表达式
【发布时间】:2018-09-05 04:28:31
【问题描述】:

我以以下两行为例,这是一个更大的数据集的一部分。该文件是使用竖线列分隔符限定的引用文本。你有太多引述的例子让我的导入崩溃了。

"BD 3 ML SYRINGE 18GX1-1/2""|"0"|""|"10"|"MISCELLANEOUS"

例如: 18GX1-1/2""| 应该是: 18GX1-1/2"|

"BD 3 ML SYRINGE 25GX1""|"0"|""|"10"|"MISCELLANEOUS"

例如: 25GX1""|应该是: 25GX1"|

我可以使用带有[\w]""| 的正则表达式在我的文件中轻松找到错误的所有实例

但是我找不到正确的表达式来简单地用一个 dbl 引号替换重复的双引号,用原始表达式替换找到的所有单词。

提前感谢您的任何建议!

【问题讨论】:

  • 尝试\w\K""\|并替换为"|
  • Wiktor...我也会试一试,让您知道它是否有效!谢谢!

标签: regex notepad++


【解决方案1】:

我会尝试找到"+([^"|]+)"+,替换为"\1"

捕获除"| 之外的任何字符序列,其中该序列被任意数量的" 包围;用一对引号替换捕获的组。

一般来说,delimiter(non-delimiters)delimiter 模式对于分隔文本搜索非常有用。

供您的测试输入

String 1: "BD 3 ML SYRINGE 18GX1-1/2""|"0"|""|"10"|"MISCELLANEOUS"
becomes:  "BD 3 ML SYRINGE 18GX1-1/2"|"0"|""|"10"|"MISCELLANEOUS"

String 2: "BD 3 ML SYRINGE 25GX1""|"0"|""|"10"|"MISCELLANEOUS"
becomes:  "BD 3 ML SYRINGE 25GX1"|"0"|""|"10"|"MISCELLANEOUS"

编辑:处理带引号的字符串内的分隔符和转义的双引号

虽然问题中没有提到,但我认为在带引号的字符串中处理分隔符和转义双引号字符可能会很好

搜索模式(^|\|)"+([^"]*)"+(?=\||$) 和替换模式\1"\2" 建立在上述基础之上,但允许| 在带引号的字符串中

String 3: "BD 3 ML SYRINGE 25GX1""|"0"|""|"10"|""MISCELL|ANEOUS""
becomes:  "BD 3 ML SYRINGE 25GX1"|"0"|""|"10"|"MISCELL|ANEOUS"

搜索模式(^|\|)"+(([^"\\]|\\.)*)"+(?=\||$) 和替换模式\1"\2" 进一步允许在带引号的字符串中转义双引号\"

String 4: "6\" Tube""|"0"|""|"10"|""MISCELL|ANEOUS""
becomes:  "6\" Tube"|"0"|""|"10"|"MISCELL|ANEOUS"

【讨论】:

  • 谢谢。这行得通。我肯定是在想具体的,而且不够广泛。由于我是正则表达式的新手,这确实也帮助我更好地理解了。很好的答案。再次感谢!
【解决方案2】:

我认为您不需要正则表达式来执行此操作。为什么不直接在find 中输入"",在replace 中输入"。我在您的示例输入上进行了尝试:

"BD 3 ML SYRINGE 18GX1-1/2""|"0"|""|"10"|"MISCELLANEOUS"

输出:

"BD 3 ML SYRINGE 18GX1-1/2"|"0"|"|"10"|"MISCELLANEOUS"

【讨论】:

  • 我还要补充一点,如果 OP 打算保留由空双引号组成的项目(如 |"0"|""|"10"| 的中间项目),这可以通过随后将 |"| 替换为 |""| 来完成
  • 好吧,克里斯,因为如果您重新阅读并仔细查看我的示例,您会发现数据集中应该存在的双引号。需要正则表达式来查找要纠正的数据中的异常。需要通配符,因为只有字母数字字符会出现在错误之前。
  • Samantha 不幸的是,这是一个完整的数据集。它不是“静态的”。任何时候都可以存在空字段。我不能像这样简单地替换整个数据集。
猜你喜欢
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2015-01-11
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多