我正在尝试匹配以下正则表达式:
我有一个字符串: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等

10-01 00:19
查看更多