使用正则表达式忽略字符串

时间:2014-08-19 07:21:17

标签: java regex

我有以下字符串列表

core.advsearch.smartshow.event
tpymt.pay.distaxdtls.event

我知道我可以使用Pattern.compile(".*.\\s*.\\.event");匹配此模式 但我想删除.*.event并替换为.xml

如何使用正则表达式?

我的预期输出

core.advsearch.xml
tpymt.pay.xml

PS:这些字符串是动态的

3 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

str = str.replaceAll("[^.]+\\.event", "xml");

RegEx Demo

对于输入文本,它将生成此输出:

core.advsearch.xml
tpymt.pay.xml

答案 1 :(得分:1)

以下代码会将子字符串.event替换为.xml

String [] s = {  "core.advsearch.smartshow.event",
        "tpymt.pay.distaxdtls.event"};
for(String s2 : s)
{
System.out.println(s2.replaceAll("\\.event", ".xml"));
}

输出:

core.advsearch.smartshow.xml
tpymt.pay.distaxdtls.xml

OR

String [] s = {  "core.advsearch.smartshow.event",
        "tpymt.pay.distaxdtls.event"};
for(String s2 : s)
{
System.out.println(s2.replaceAll("\\.[^.]*\\.event$", ".xml"));
}

输出:

core.advsearch.xml
tpymt.pay.xml

答案 2 :(得分:1)

您需要使用正则表达式来匹配字符串

中的最后一个单词

<强>样品:

String s = "core.advsearch.smartshow.event";
System.out.println(s.replaceAll("(\\.event)$", ".xml"));

现在上面的正则表达式只匹配最后一个单词,所以我们说你的字符串是这样的:core.advsearch.event.smartshow.event现在第一个事件不会被.xml替换掉它的最后一部分。