首页 文章

正则表达式:如何替换匹配模式中的字符

提问于
浏览
1

我有一定的模式

XXX >>> [a,b,c]

在一大块文本中,我想在匹配的文本中替换所有“,”只用“ . ”,所以我得到

XXX >>> [a . 湾C]

Is it possible to do it with Regex only (c# flavor) and if yes how?

更新:

我不想在整个文本中用点替换所有逗号!它类似于这个问题,但不幸的是不一样:Ruby Regex - Need to replace every occurrence of a character inside a regex match我没有问题确定由

  • 前缀"XXX >>> ["
    需要替换逗号的

  • 目标主体,例如"a, b, c, d"

  • 后缀"]"

解决方案: (?<=XXX >>> \[|\G)([^][,]*),(?=[^][]*\])

技巧是

  • \ G.

  • 匹配组声明

2 回答

  • 0

    我会分两个阶段做这件事 . 首先, grab 包含要替换的逗号的行的部分:

    (XXX\s>>>\s)(\[[^\]]*\])
    

    这将捕获两个组: XXX >>> 部分和 [a, b, c] 部分 . 然后,在第二部分上简单替换逗号 - >句点 . 最后,将两个部分连接在一起 .

  • 2

    您可以使用此正则表达式进行搜索:

    (?<=XXX >>> \[|\G)([^][,]*),(?=[^][]*\])
    

    并使用 "$1." 进行更换 .

相关问题