Regex 正则表达式替换给定位置的任何字符
我想将一个字符替换为另一个字符,它位于字符串中的特定位置。 例如:Regex 正则表达式替换给定位置的任何字符,regex,pcre,Regex,Pcre,我想将一个字符替换为另一个字符,它位于字符串中的特定位置。 例如: 这是一个测试字符串!现在来了一个不同的!还有另一个来证明我想要的!你好!如何实现将所有感叹号替换为点 我知道我的角色位于第21位,因此我尝试:{21}(.)\K(+.*?\1)+ 第一个捕获组具有我想要的角色,我可以利用\K从最后一个匹配开始。但是,我怎样才能匹配字符串的其余部分呢 所需的输出将是: 这是一个测试字符串。现在来了一个不同的。还有另外一个来证明我想要什么。你好。如何实现将所有感叹号替换为点。 提前谢谢 您可以使用
这是一个测试字符串!现在来了一个不同的!还有另一个来证明我想要的!你好!如何实现将所有感叹号替换为点代码>
我知道我的角色位于第21位,因此我尝试:{21}(.)\K(+.*?\1)+
第一个捕获组具有我想要的角色,我可以利用\K从最后一个匹配开始。但是,我怎样才能匹配字符串的其余部分呢
所需的输出将是:
这是一个测试字符串。现在来了一个不同的。还有另外一个来证明我想要什么。你好。如何实现将所有感叹号替换为点。
提前谢谢 您可以使用
^.{21}\K.
或者,如果有换行符
(?s)^.{21}\K.
见
详细信息
(?s)
-一个dotall修饰符,也可以使
匹配换行符
^
-字符串的开头
{21}
-任意21个字符
\K
-
-任意一个字符
请注意,在许多情况下,您可能只需要使用组和反向引用,^(.{21})。
->$1
谢谢Wiktor,但我必须将每个感叹号替换为一个点(我编辑了我的原始帖子并添加了所需的输出)。@Attila您需要分两步完成此操作,如果不支持lookbehinds中的无限模式长度,则不可能实现。