0

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

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

2 回答 2

0

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

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

会给你“ssh1”

于 2013-06-05T00:33:12.480 回答
0

捕获组用于捕获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);
}

请注意,由于匹配项与完整的String.

于 2013-06-05T01:15:07.493 回答