我想有一个布尔值告诉我CSS选择器是否有:
子字符串必须在选择器中匹配,该选择器可能包括组合表,例如表> tr#someid.someclass> TD ...
这是我的代码:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MultipleClassId {
private static final String regexs[] = {
"(#[^\\s\\+>~\\.\\[:]+)(\\.[^\\s\\+>~\\.\\[:]+)",
"(\\.[^\\s\\+>~\\.\\[:]+)(#[^\\s\\+>~\\.\\[:]+)",
"(\\.[^\\s\\+>~\\.\\[:]+)(\\.[^\\s\\+>~\\.\\[:]+)" };
public boolean isMultipleClassId(String selector) {
for (int i = 0; i < regexs.length; i++) {
Pattern p = Pattern.compile(regexs[i]);
Matcher m = p.matcher(selector);
if (m.find())
return true;
}
return false;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter selector: ");
String selector = input.next();
MultipleClassId specificityCalculator = new MultipleClassId();
boolean isMultiple = specificityCalculator.isMultipleClassId(selector);
System.out.println(isMultiple);
}
}
如果选择器的第一个元素具有多个属性选择器(例如“tr#someid.someclass”)以及上面列出的任何一种情况,它会找到该模式。但是,如果我有一个选择器,如“table tr#someid.someclass”,则返回false。
然而,在RegexPlanet中,它正确匹配(请查看以下链接http://fiddle.re/ykedp)。
这是我的Java库版本的问题吗?或者我的代码有问题? 谢谢!
答案 0 :(得分:0)
问题只是
String selector = input.next();
必须替换为
String selector = input.nextLine();