gpt4 book ai didi

java - 将一个正则表达式替换为另一个正则表达式

转载 作者:行者123 更新时间:2023-11-30 07:39:05 25 4
gpt4 key购买 nike

我想用java中的正则表达式替换一些正则表达式,例如

要求:

输入:xyxyxyP

所需输出:xyzxyzxyzP

表示我想将 "(for)+\{"替换为 "(for\{)+\{" 。有什么办法可以做到这一点吗?

我尝试过以下代码

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class ReplaceDemo2 {

private static String REGEX = "(xy)+P";
private static String INPUT = "xyxyxyP";
private static String REGEXREPLACE = "(xyz)+P";

public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
// get a matcher object
Matcher m = p.matcher(INPUT);
INPUT = m.replaceAll(REGEXREPLACE);
System.out.println(INPUT);
}
}

但输出是(xyz)+P

最佳答案

您可以使用基于 \G 的正则表达式来实现它:

String s = "xyxyxyP";
String pattern = "(?:(?=xy)|(?!^)\\G)xy(?=(?:xy)*P)";
System.out.println(s.replaceAll(pattern, "$0z"));

查看regex demoan IDEONE demo .

简而言之,正则表达式匹配:

  • (?:(?=xy)|(?!^)\\G) - 后跟 xy 的位置 ((?=xy )) 或上一次成功匹配后的位置 ((?!^)\\G)
  • xy - 文字字符序列 xy 但仅当后跟...
  • (?=(?:xy)*P) - 零个或多个 xy 序列(由于 (?:xy)*) 后跟一个 P

关于java - 将一个正则表达式替换为另一个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945545/

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