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是结束,因为它保持不变。