Java 如何使用正则表达式将字符串从一种模式转换为另一种模式?

Java 如何使用正则表达式将字符串从一种模式转换为另一种模式?,java,regex,converter,Java,Regex,Converter,我有一个字符串要使用正则表达式转换: AA_BB_CC_DD=>EE_BB_FF_DD 尝试使用类似regex的(AA)(.*)(FF)。但这并不奏效。有人能帮忙吗 如果你能给我指一本好的正则表达式指南,那也太好了。regex的站点太多了。不知道该指哪一个。怎么样 String before = "AA_BB_CC_DD"; String after = before.replaceFirst("AA(_BB_)CC(_DD)", "EE$1FF$2"); System.out.println

我有一个字符串要使用正则表达式转换:

AA_BB_CC_DD
=>
EE_BB_FF_DD

尝试使用类似regex的
(AA)(.*)(FF)
。但这并不奏效。有人能帮忙吗

如果你能给我指一本好的正则表达式指南,那也太好了。regex的站点太多了。不知道该指哪一个。

怎么样

String before = "AA_BB_CC_DD";
String after = before.replaceFirst("AA(_BB_)CC(_DD)", "EE$1FF$2");

System.out.println(after);
// EE_BB_FF_DD
您没有描述输入字符串my的形式如何变化,因此很难生成合适的正则表达式

如果您想允许
AA
CC
之间的任何内容,您可以使用
(.*)
而不是
(\u BB)

上面显示了在替换字符串中使用由
()
捕获的内容的原理,即
$1
指第一个
()
中的内容,而
$2
指第二个
()
中的内容

链接:
.
.

怎么样

String before = "AA_BB_CC_DD";
String after = before.replaceFirst("AA(_BB_)CC(_DD)", "EE$1FF$2");

System.out.println(after);
// EE_BB_FF_DD
您没有描述输入字符串my的形式如何变化,因此很难生成合适的正则表达式

如果您想允许
AA
CC
之间的任何内容,您可以使用
(.*)
而不是
(\u BB)

上面显示了在替换字符串中使用由
()
捕获的内容的原理,即
$1
指第一个
()
中的内容,而
$2
指第二个
()
中的内容

链接:
.

.

如果您想要完整的解释,可以查看以下内容:

当你了解它是如何工作的,这就足够了

例如,我假设AA->EE,BB->BB,CC->FF,DD->DD 因此,您可以尝试以下方法:

String before = "AA_BB_CC_DD";
String after = before.replaceAll("AA_(.*)_CC_(.*)", "EE_$1_FF_$2");
你得到了结果。我解释一下正则表达式:
“AA_u389;(.*)CC(.*)”
该程序尝试匹配AA。表示任意字符,*表示重复。因此,AA_u和CC之间的任何字符串都是匹配的。()表示“已记忆”的组。

“EE_u$1\u FF_$2”
AA_uu替换为EE_uu$1表示打印第一组()。

FF和$2也一样。

如果您想要完整的解释,可以在这里查看:

当你了解它是如何工作的,这就足够了

例如,我假设AA->EE,BB->BB,CC->FF,DD->DD 因此,您可以尝试以下方法:

String before = "AA_BB_CC_DD";
String after = before.replaceAll("AA_(.*)_CC_(.*)", "EE_$1_FF_$2");
你得到了结果。我解释一下正则表达式:
“AA_u389;(.*)CC(.*)”
该程序尝试匹配AA。表示任意字符,*表示重复。因此,AA_u和CC之间的任何字符串都是匹配的。()表示“已记忆”的组。

“EE_u$1\u FF_$2”
AA_uu替换为EE_uu$1表示打印第一组()。

FF和$2也是一样。

对于第二个问题,这里有一个很好的正则表达式。您使用哪种语言来执行正则表达式?regex有不同的家族,所以知道使用哪一个是很重要的。你的regex说要匹配AA,后面是字母ABC,后面是字母FF。模式“AAABCFF”如何匹配字符串AA_BB_CC_DD?在什么基础上用EE替换AA,用FF替换CC?没有对任意替换功能的支持是不可能做到这一点的。Visibone是一个很好的备忘单:--如果你正在学习它们,它们是层压的,并且它们作为一个物理参考是很好的,你可以拿着看。对于你的第二个问题,这里有一个很好的正则表达式。你使用哪种语言来执行你的正则表达式?regex有不同的家族,所以知道使用哪一个是很重要的。你的regex说要匹配AA,后面是字母ABC,后面是字母FF。模式“AAABCFF”如何匹配字符串AA_BB_CC_DD?在什么基础上用EE替换AA,用FF替换CC?没有对任意替换功能的支持是不可能做到这一点的。Visibone是一个很好的备忘单:--如果你知道他们是层压销售的,他们很好地作为一个物理参考,你可以拿着看。为什么不
String after=“EE\u BB\u FF\u DD”直接然后?:)@SP00米。问题说明“使用正则表达式”;)为什么不在“EE\u BB\u FF\u DD”后面加上字符串直接然后?:)@SP00米。问题说明“使用正则表达式”;)在结束前不会匹配所有内容<代码>[^]*
可能是您想要的。从示例中可以看出,我认为DD是结束,因为它保持不变。在结束之前,不会匹配所有内容吗<代码>[^]*可能是您想要的。从示例中可以看出,DD是结束,因为它保持不变。