【问题标题】:C# Regex.Replace number letter numberC# Regex.替换数字字母数字
【发布时间】:2022-01-04 06:12:39
【问题描述】:

如何替换字符串

2X6X14 #2&BTR KD SPF MIRREX 1/2X5

2 x 6 x 14 #2&BTR KD SPF MIRREX 1/2 x 5

我想用“x”替换“X”,但前提是它被数字包围,而不是它位于诸如 MIRREX 之类的单词的末尾

【问题讨论】:

  • (?<=\d)x(?=\d) 的匹配项替换为' x ',其中(?<=\d)正向后视(?=\d)正向前瞻
  • 对我来说似乎很清楚。我已经投票决定重新开放。

标签: c# regex


【解决方案1】:

两边各有一个数字的X:

var output = Regex.Replace(input, @"(\d)X(?=\d)",  "$1 x ");

这会找到一个数字,然后是 X,然后是另一个数字。它将第一个数字捕获到一个组 $1 中,用于替换例如 2X -> 2 x 然后移动到下一个匹配项

或者确实正如 Cary 评论的那样(带有 X/x 的小错字),只是使用了环视:

var output = Regex.Replace(input, @"(?<=\d)X(?=\d)",  " x ");

..类似的想法 - 在两个数字之间找到一个 X,这两个数字都不会被捕获或阻止匹配下一个 X,所以这是用“ x”替换找到的 X 的情况

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2018-11-06
    • 2020-09-14
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2023-02-13
    相关资源
    最近更新 更多