【问题标题】:ultraedit find quote and replaceultraedit 查找报价并替换
【发布时间】:2017-10-21 03:20:23
【问题描述】:

我有一行看起来像这样:

'ABCD','ABKCKD','ADFL','3','43

在 UltraEdit 中,我试图找到 '3',' 并将其替换为 3, 我试图找到['][\d]+['][,]['],发现'3','

但是,当我尝试将其替换为 [\d]+[,], 时,它不起作用。

有什么想法吗?

谢谢。

【问题讨论】:

  • 使用'(\d+)','并替换为$1,'
  • '3','43 ... 为什么 43 缺少右引号?
  • 我只是忽略了最后一句话。很抱歉造成混乱。

标签: regex ultraedit


【解决方案1】:

您首先需要捕获引号之间的数字,您可以使用捕获组()这样做:

'([\d]+)','

然后使用^1 使用捕获的数字,这样您的替换将是:^1,

Ultraedit 正则表达式用法reference

【讨论】:

  • 它正确地捕获了我想要的部分。但是,当我尝试替换它时,它实际上显示 $1 而不仅仅是数字
  • 试试这个^1,也可以找到使用^( & ^)
  • ultraedit 提到使用^1 而不是/1,参考:ultraedit.com/support/tutorials-power-tips/ultraedit/…
  • 您也应该尝试将'3' 替换为3 而不是'3',' 与3,,因为它不会用于最后一个数字,如果有的话。
【解决方案2】:

UltraEdit 支持 3 种不同的正则表达式引擎:

  • Perl ... 使用 Boost Perl 正则表达式库的最强大的正则表达式引擎。
  • UltraEdit ... UltraEdit 的本机正则表达式引擎,语法类似于 Microsoft Office。
  • Unix ... UltraEdit 正则表达式引擎,带有 Perl 正则表达式语法(或多或少)。

IDM 电源提示tagged expressions 解释了在运行 UltraEdit 正则表达式替换时标记/捕获/标记组的用法。

IDM 电源提示Perl regular expressions: Backreferences 解释了在运行 Perl 正则表达式替换时标记/捕获组的用法。此语法也可用于功能有限的旧版 Unix 正则表达式引擎。

[...] 定义一个字符类/集,即一个字符列表。方括号内的任何字符都可以或必须找到以进行肯定搜索。对于像' 和, 这样的单个字符,使用字符集没有多大意义。可以使用['][\d]+['][,]['],但作为搜索字符串'\d+','使用要容易得多。

请注意,Unix/Perl 正则表达式搜索字符串中的转义序列\d 定义了任何数字 的字符集。 UltraEdit 和 Unix/Perl 正则表达式搜索字符串中的等价物是 [0-9]。

替换可以用搜索字符串'^([0-9]+^)','来完成,替换字符串^1,'使用UltraEdit正则表达式引擎。

替换可以用搜索字符串'(\d+)','来完成,替换字符串\1,'使用Unix或Perl正则表达式引擎。

使用 Perl 正则表达式引擎,也可以将搜索字符串 '(\d+)'(?=,') 替换为替换字符串 \1,因为 ,' 指定为正数 lookahead不匹配/选择字符。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2021-07-05
    • 1970-01-01
    • 2012-06-24
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多