我相信这个问题有一个简单的解决方案,但我似乎无法得到正确的答案:
我想在一行中替换特定的模式,只有整行匹配正则表达式时才能替换。 因此,在我的情况下,只有当整行是数字和管道符号|时,三个管道符号|才应被替换为下划线_:
我想在一行中替换特定的模式,只有整行匹配正则表达式时才能替换。 因此,在我的情况下,只有当整行是数字和管道符号|时,三个管道符号|才应被替换为下划线_:
|||10|||-80|||-120|||400 ---> replace
|||10|||asdf|||-120|||400 ---> don't replace
|||10|||-80|||400 ---> replace
|||10|||-80|||-120|||400|||test ---> don't replace
期望结果:
___10___-80___-120___400
|||10|||asdf|||-120|||400
___10___-80___400
|||10|||-80|||-120|||400|||test
我的尝试:
\|\|\|(?=\-?\d+)
如果后面跟着数字,它会按预期替换管道符号,但当然也会在“无效”的行中进行替换。
^(\|\|\|\-?\d+){1,}$
这个模式匹配整行,所以我不能只替换管道符。
我理解为什么我的模式不起作用,也许我只需要用两次操作就可以了,但感觉完全有可能做到。