我正在进行常规表达以匹配以下字符串。
String sample1 = "key:value|key:value|key:value|key:value";
正如您可以看到键:值是定期重复的,唯一的分隔符是 管道(|)。
注意事项:
key =>只是字母 value =>字母,+ - 唱歌和数字(暂时)
在订单中,我有以下正则表达式:
public void testOptionsRules()
{
String match = "[a-z]+[:][-+]?[a-z_0-9]+";
boolean option1 = "a:f".matches(match);
boolean option2 = "ad:d".matches(match);
boolean option3 = "addc:dd1".matches(match);
boolean option4 = "min:50".matches(match);
boolean option5 = "ssss:-10".matches(match);
boolean option6 = "dropl2etx:5555".matches(match);
assertTrue(option1 && option2 && option3 && option4 && option5);
assertFalse(option6);
}
最后一次测试很有效。但是我如何匹配周期性重复。我的意思是 键:值|键:值|键:值|键:值
由于
答案 0 :(得分:3)
您可以使用匹配器循环播放字符串中的每个匹配项:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/**
<P>{@code java RegexForRepeatingString}</P>
**/
public class RegexForRepeatingString {
public static final void main(String[] ignored) {
String sRegex = "\\b[a-z]+:[+-]?[a-z_0-9]+\\b";
String sToSearch = "keya:valuea|keyb:valueb|keyc:valuec|keyd:valued";
Matcher m = Pattern.compile(sRegex).matcher(sToSearch);
while(m.find()) {
System.out.println(m.group());
}
}
}
输出:
[C:\java_code\]java RegexForRepeatingString
keya:valuea
keyb:valueb
keyc:valuec
keyd:valued