gpt4 book ai didi

java - 为什么以下正则表达式在通过 Spring 输入时不起作用

转载 作者:行者123 更新时间:2023-11-29 03:33:14 24 4
gpt4 key购买 nike

这是 Spring 配置:

<bean id="wrapInMarginalMarkup" class="com.a.ChangeContentAction">
<property name="regEx">
<bean class="java.util.regex.Pattern" factory-method="compile">
<constructor-arg value="(.*)(&lt;m&gt;)(.*)(&lt;xm&gt;)(.*)" />
</bean>
</property>
<property name="replaceExpression" value="$1&lt;marginal\.markup&gt;$3&lt;/marginal\.markup&gt;$5" />
</bean>

该类接受 java 中的参数,例如:

   private Pattern regEx;
private String replaceExpression;

/**
* {@inheritDoc}
*/
@Override
public int execute(final BuilderContext context, final Paragraph paragraph)
{
String content = paragraph.getContent();
paragraph.setContent(regEx.matcher(content).replaceAll(replaceExpression));
}

这是将在模式上匹配的字符串的样子:

"Be it enacted by the Senate and House of Representatives of the United States of America in Congress assembled,,&lt;m&gt;Surface Transportation Extension Act of 2012.,&lt;xm&gt;"

它似乎并没有真正替换这里的标记,问题是什么?

我希望输出字符串看起来像:

"Be it enacted by the Senate and House of Representatives of the United States of America in Congress assembled,,&lt;marginal.markup&gt;Surface Transportation Extension Act of 2012.,&lt;/marginal.markup&gt;"

最佳答案

由于您在 Spring XML 文件中使用转义实体,因此传递给 compile() 方法的实际模式不是

(.*)(&lt;m&gt;)(.*)(&lt;xm&gt;)(.*)

但是

(.*)(<m>)(.*)(<xm>)(.*)

如果你想通过第一个模式,你必须转义和号:

(.*)(&amp;lt;m&amp;gt;)(.*)(&amp;lt;xm&amp;gt;)(.*)

关于java - 为什么以下正则表达式在通过 Spring 输入时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903315/

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