我正在尝试匹配以下正则表达式:
我有一个字符串:F-F-W-F
我需要编写一个正则表达式,以检查第一个字符是W还是F,然后是-。检查字符串F-F-W-F
。
这是我想出的:
if(SBAKTIV.matches("[WF]{1}-[WF]{1}-[WF]{1}-[WF]{1}")) {
SBAKTIVMessageForLog = "SBAKTIV: Okay";
return true;
最佳答案
如评论中所述,您的正则表达式很好。或者可以缩短为([WF]-)*[WF]
或([WF]-){3}[WF]
。
我只是发布一个答案,以提供基于非正则表达式的解决方案*,以防万一您最终也想要/需要其中一个:
for (int i = 0; i < word.length(); i++) {
if (i % 2 == 0) {
if (word.charAt(i) != 'F' && word.charAt(i) != 'W') {
return false;
}
} else if (word.charAt(i) != '-') {
return false;
}
}
return true;
Demo
*这显然是基于长度确定的,而不是null等