gpt4 book ai didi

regex - R正则表达式交换文本部分

转载 作者:行者123 更新时间:2023-12-04 23:44:50 26 4
gpt4 key购买 nike

我想从左到右交换文本部分,反之亦然。这是从左到右完美运行:

sub("(^x+)(.+)", "\\2\\1","xxxxx6.0")
[1] "6.0xxxxx"

而另一个方向没有:
sub("(.+)(x+$)", "\\2\\1","6.0xxxxx")
[1] "x6.0xxxx"

我错过了什么?

最佳答案

问题在于您的第二个正则表达式。第二个正则表达式有 .+这是一个匹配每个字符的贪婪量词。第一组会尽量匹配。

(6.0xxxx)(x)

括号表示将与您的正则表达式匹配的两个组。

有两种方法可以解决这个问题。第一种是使用惰性量词而不是贪婪量词:
/(.+?)(x+$)/

问号使 +懒惰,只取最少的位数而不是最多的位数。这会像
(6.0)(xxxxx)

这就是你想要的。

另一种选择是匹配所有不是 x 的字符,而不是所有可能的字符。 .
/(^[^x]+)(+x$)/

匹配组内的插入符号表示匹配组已反转(匹配所有不是 x 的内容)。这将匹配所有内容直到第一个 x作为第 1 组,这将产生所需的组。

关于regex - R正则表达式交换文本部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31221065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com