gpt4 book ai didi

CSS双类属性的Java正则表达式匹配

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:01 24 4
gpt4 key购买 nike

我想要一个 boolean 值来告诉我 CSS 选择器是否具有:

  • Id选择器(#)+Class选择器(.)在同一个元素中,比如table#someid.someclass
  • 同一元素中的类选择器(.)+Id选择器(#),如table.someclass#someid
  • 同一元素中的双类选择符(.),如table.class1.class2

子字符串必须在可能包含组合器的选择器中匹配,例如 table > 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 库版本的问题吗?还是我的代码有问题?谢谢!

最佳答案

问题是

String selector = input.next();

必须替换为

String selector = input.nextLine();

关于CSS双类属性的Java正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com