如何使用spring捕获与模式匹配的组,并将匹配的模式连接到另一个字符串?

时间:2013-06-04 20:49:29

标签: java regex spring

可以有像sshexclude1 sshexclude2这样的字符串,我想只捕获“1”和“2”,即sshexclude后面的数字,并将其保存为ssh *,如何提取该值。这是我到目前为止所尝试的...(我想将串联值保存在字符串类型的bean中)

<bean id="sshExcludeValue" class="java.util.regex.Pattern" factory-method="compile">
     <constructor-arg value="^sshexclude\d$" />
</bean>

2 个答案:

答案 0 :(得分:0)

我不认为这与Spring有什么关系,但你可以只做一个简单的字符串正则表达式替换,例如:

String result = "sshexclude1".replaceFirst("exclude", "");

会给你“ssh1”

答案 1 :(得分:0)

Capturing groups用于捕获正则表达式中Strings的部分。它们的应用程序在应用程序上下文文件中与在Java代码中没有区别:

<bean id="sshExcludeValue" class="java.util.regex.Pattern" factory-method="compile">
   <constructor-arg value="sshexclude(\d+)" />
</bean>

Autowire一个bean来接收Pattern

@Autowired
Pattern pattern;

然后使用Matcher#matches提取数字

String str = "sshexclude2";
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
   String newString = "ssh" + matcher.group(1);
}

请注意,当matches与完整String匹配时,会删除行锚点的开头和结尾。