【问题标题】:Regular Expressions - how to preserve original string while also replacing a particular pattern in a string?正则表达式 - 如何在保留原始字符串的同时替换字符串中的特定模式?
【发布时间】:2018-08-03 15:54:34
【问题描述】:

在 PCRE 的上下文中,假设给定的输入字符串如下:

peakOfPeaks(nmax)

现在,我将正则表达式设为 (\p{P}),而我的替换字符串是 _$1_,因此输出变为:

peakOfPeaks_(_nmax_)_

如何更改正则表达式,以便我可以保留原始字符串,以便我的输出是:

 peakOfPeaks(nmax) peakOfPeaks_(_nmax_)_

【问题讨论】:

  • s + regex.replace(s, pattern)?您只能参考替换模式中匹配的内容。
  • 类似this 使用捕获组?
  • 什么是\p{P}?我找不到任何相关文档
  • @WiktorStribiżew - 是的,这是非常简单的解决方案,我希望我能够以编程方式控制字符串。不幸的是,就我而言,我只能使用正则表达式来操作字符串。它不是一个程序,而是一个配置设置,我只能使用正则表达式。
  • @Marathon55 你可以找到更多信息here

标签: regex pcre


【解决方案1】:

perl 解决方案:

use Modern::Perl;

my $str = 'peakOfPeaks(nmax)';
$str =~  s/^(\P{P}+)(\p{P})(\P{P}+)(\p{P})$/$& $1_$2$3_$4_/;
say $str;

输出:

peakOfPeaks(nmax) peakOfPeaks_(nmax_)_

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 2019-11-12
    • 2021-12-19
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多