用于替换XML标记名的Java正则表达式

用于替换XML标记名的Java正则表达式,java,regex,Java,Regex,我正在尝试用XXYY1替换XML标记中的MessageParam The MessageParam has requested to travel <BR/>From <MessageParam name="0" desc="city code"/> to <MessageParam name="1" desc="city code"/> on <MessageParam name="2" desc="date"/> at <MessageP

我正在尝试用XXYY1替换XML标记中的MessageParam

The MessageParam has requested to travel <BR/>From <MessageParam name="0" desc="city code"/> to <MessageParam name="1" desc="city code"/> on <MessageParam name="2" desc="date"/> at <MessageParam name="3" desc="time"/>.
MessageParam已请求在从到的时间旅行
我希望输出是

The MessageParam has requested to travel <BR/>From <XXYY1 name="0" desc="city code"/> to <XXYY2 name="1" desc="city code"/> on <XXYY3 name="2" desc="date"/> at <XXYY4 name="3" desc="time"/>.
MessageParam已请求在从到的时间旅行
这是我的密码

private void ProcessString()
{
    String text = "The Traveler has requested to travel <BR/>From <MessageParam name=\"0\" desc=\"city code\"/> to <MessageParam name=\"1\" desc=\"city code\"/> on <MessageParam name=\"2\" desc=\"date\"/> at <MessageParam name=\"3\" desc=\"time\"/>.";
    int Counter = 0;
    StringBuffer outString = new StringBuffer();
    Pattern pattern = Pattern.compile("(<MessageParam.*?>)");
    Matcher matcher = pattern.matcher(text);

    while (matcher.find())
    {
        Counter++;
        String sReplacer = new StringBuffer("XXYY").append(Counter).toString();
        matcher.appendReplacement(outString, sReplacer);
    }
    matcher.appendTail(outString);
    System.out.println(outString.toString());
  }
private void ProcessString()
{
String text=“旅行者已请求在从到的时间旅行。”;
int计数器=0;
StringBuffer outString=新的StringBuffer();
Pattern=Pattern.compile(“()”);
Matcher Matcher=pattern.Matcher(文本);
while(matcher.find())
{
计数器++;
字符串sReplacer=newstringbuffer(“XXYY”).append(Counter.toString();
匹配器。附件更换(伸出,更换);
}
匹配器。附尾(伸出);
System.out.println(outString.toString());
}
我得到的结果是

 The MessageParam has requested to travel <BR/> From XXYY1 to XXYY2 on XXYY3 at XXYY4.
消息参数已请求在XXYY3的XXYY4从XXYY1旅行到XXYY2。

我很确定我的正则表达式是不正确的。因为我不擅长正则表达式,所以我无法找出哪里出了问题

我不会用正则表达式做这样的事情

我更喜欢使用模板引擎(如Velocity)解析源XML并将目标值映射到输出XML


我的第二个选择是从一个XML到另一个XML的XSL-T转换。

正则表达式应该是
(?只需使用
即可搜索
不要用正则表达式解析非正则语言!