Java 如何检查每个大写字母后的字母是否相同?
任务: 编写一个函数,该函数接收一个表达式,该表达式仅由子句('a','a','b','b','c','c')作为字符串或字符数组组成,并返回一个表示表达式有效或无效的布尔值 示例:输入-输出Java 如何检查每个大写字母后的字母是否相同?,java,regex,Java,Regex,任务: 编写一个函数,该函数接收一个表达式,该表达式仅由子句('a','a','b','b','c','c')作为字符串或字符数组组成,并返回一个表示表达式有效或无效的布尔值 示例:输入-输出 AaBb-正确 BCAacb-正确 BCcAab-正确 阿卡巴卡-真的 AabB-错误 BCAcaB-错误 这是我的代码: public class Main { private static Scanner scanner = new Scanner(System.in); publi
- AaBb-正确
- BCAacb-正确
- BCcAab-正确
- 阿卡巴卡-真的
- AabB-错误
- BCAcaB-错误
public class Main {
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter phrase");
String inputExpression = scanner.nextLine();
//checkPhraseTrueOrFalse(inputPhrase);
System.out.println(isValidExpression(inputExpression));
}
public static boolean isValidExpression(String expression) {
String[] splitInputExpressionExp = expression.split("@", 2);
for (String s : splitInputExpressionExp) {
if (s.contains("Aa") || s.contains("Bb") || s.contains("Cc")) {
if ((!s.contains("Aa") || !s.contains("Bb") || !s.contains("Cc"))){
return true;
}
}
}
return false;
}
如何修改isValidExpression方法?您可以重复匹配0+大写字符,并重复匹配Ab Bb或Cc后跟可选小写字符 要防止部分匹配,可以使用单词边界
\b
\b(?:[ABC]*(?:Aa|Bb|Cc)[abc]*)+\b
模式匹配:
防止部分匹配的单词边界\b
非捕获组(?:
匹配可选大写字符[ABC]*
A
B
C
匹配1个备选方案(?:Aa | Bb | Cc)
匹配可选的小写字符[abc]*
a
b
c
关闭组并重复1+次)+
单词边界\b
String regex = "\\b(?:[ABC]*(?:Aa|Bb|Cc)[abc]*)+\\b";
我看不到正则表达式的任何用途。为什么这个问题被标记为[regex]?你是在寻找一个正则表达式解决方案还是一个错误的标签?是的,我在寻找正则表达式解决方案。像这样<代码>\b(?[ABC]+[ABC]+)+\b@第四只鸟将为“BBa”返回true。这个问题不包含这个例子,但据我所知,这不是一个有效的输入(所有有效的例子都包含相同数量的大写和小写字母,每个大写字母都有一个匹配的小写字母),我很清楚这个问题。我不理解需要细节或明确性作为投票接近这个问题的原因。