我的一些字符串可能包含一个看起来像@[alph4Num3ric-alph4Num3ric]
的子字符串,在那里我将找到alpha numberic id并将其替换为映射到地图中相关键的相应文本值。
我的第一个倾向是检查我的string.contains("@[")
,但我想更具体
所以现在我看Pattern.matches(
但不确定正则表达式和总表达式
我如何在Pattern.matches方法中对@ [...... - ....]进行正则表达式,它还必须考虑破折号。所以我不确定需要在这种语法或通配符中转义什么,或者更多。
如果这是最好的消息,我也不能100%确定。我想首先从Pattern.matches中获取一个布尔值,然后获取实际值并使用这些值修改字符串,这似乎已经足够了,但我想最小化计算。
答案 0 :(得分:1)
尝试使用:
/@[(a-zA-Z0-9-)+]/
我还没试过,但希望这会有所帮助。此外,如果它返回错误,则在9和 - 之间添加反斜杠。 / @ [(A-ZA-Z0-9 - )+] /
答案 1 :(得分:1)
请试试这个,
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String expression = "String contains @[alph4Num3ric-alph4Num3ric] as substring";
Pattern pattern = Pattern
.compile("\\@\\[([a-zA-Z0-9]+)-([a-zA-Z0-9]+)\\]");
Matcher matcher = pattern.matcher(expression);
while (matcher.find()) {
System.out.println("matched: "+matcher.group());
System.out.println("group1: "+matcher.group(1));
System.out.println("group2: "+matcher.group(2));
System.out
.println("after replace "+expression.replace(matcher.group(1), "customkey"));
}
}
}
输出:
matched: @[alph4Num3ric-alph4Num3ric]
group1: alph4Num3ric
group2: alph4Num3ric
after replace: String contains @[customkey-customkey] as substring