我正在使用正则表达式来匹配以下字符串。
String sample1 = "key:value|key:value|key:value|key:value";
正如您所看到的 key:value 定期重复,唯一的分隔符是
管道 (|)。
注意事项:
键 => 只是字母
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);
}
最后一次测试效果很好。但我怎样才能匹配周期性的重复呢?我是说
键:值|键:值|键:值|键:值。
Thanks
您可以使用匹配器循环遍历字符串中的每个匹配项:
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());
}
}
}
Output:
[C:\java_code\]java RegexForRepeatingString
keya:valuea
keyb:valueb
keyc:valuec
keyd:valued
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)