Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式年份范围 import java.util.ArrayList; 导入java.util.List; 公共类ValidateDemo{ 公共静态void main(字符串[]args){ 列表输入=新的ArrayList(); 输入。添加(“2005-WW-1”); 输入。添加(“3012-W-223”); 输入。添加(“1952-WX-431”); 输入。添加(“19998-d-4134”); 输入。添加(“1899-c-7465”); for(字符串车:输入){ (3-3-9[0-9[0-9[0-9[0-9[0-9[0-9];201-2[0-0-2)如果(b-)b-)b-?(KK| KKKKKKKKKKKKKK0| KKKKKKKKK| ww| KKKKKKKKKKKKKK自然自然自然自然无无无无无无无本本本本本124;WW124;WW124;WW124;;;;中国中国中国|;;中国中国中国中国中国中国中国中国(124;;中国(124;;;;;;中国中国中国中国中国(124;;;中国中国)中国中国中国中国中国中国中国中国)))的中国(124;;;;;;;;;;;;中国(124;中国(124;;;中国中国中国中国)))))| lk | lm | lm | ls | ls | mh | mh | mn | mo | mo | oy | so | rn | tn | tn | ts | ts | w | w | wd | wd | wh | wh | wh | wx | | | x | | x | wd | | | 4 | |{ System.out.println(“汽车模板”+汽车); } } } }_Java_Regex - Fatal编程技术网

正则表达式年份范围 import java.util.ArrayList; 导入java.util.List; 公共类ValidateDemo{ 公共静态void main(字符串[]args){ 列表输入=新的ArrayList(); 输入。添加(“2005-WW-1”); 输入。添加(“3012-W-223”); 输入。添加(“1952-WX-431”); 输入。添加(“19998-d-4134”); 输入。添加(“1899-c-7465”); for(字符串车:输入){ (3-3-9[0-9[0-9[0-9[0-9[0-9[0-9];201-2[0-0-2)如果(b-)b-)b-?(KK| KKKKKKKKKKKKKK0| KKKKKKKKK| ww| KKKKKKKKKKKKKK自然自然自然自然无无无无无无无本本本本本124;WW124;WW124;WW124;;;;中国中国中国|;;中国中国中国中国中国中国中国中国(124;;中国(124;;;;;;中国中国中国中国中国(124;;;中国中国)中国中国中国中国中国中国中国中国)))的中国(124;;;;;;;;;;;;中国(124;中国(124;;;中国中国中国中国)))))| lk | lm | lm | ls | ls | mh | mh | mn | mo | mo | oy | so | rn | tn | tn | ts | ts | w | w | wd | wd | wh | wh | wh | wx | | | x | | x | wd | | | 4 | |{ System.out.println(“汽车模板”+汽车); } } } }

正则表达式年份范围 import java.util.ArrayList; 导入java.util.List; 公共类ValidateDemo{ 公共静态void main(字符串[]args){ 列表输入=新的ArrayList(); 输入。添加(“2005-WW-1”); 输入。添加(“3012-W-223”); 输入。添加(“1952-WX-431”); 输入。添加(“19998-d-4134”); 输入。添加(“1899-c-7465”); for(字符串车:输入){ (3-3-9[0-9[0-9[0-9[0-9[0-9[0-9];201-2[0-0-2)如果(b-)b-)b-?(KK| KKKKKKKKKKKKKK0| KKKKKKKKK| ww| KKKKKKKKKKKKKK自然自然自然自然无无无无无无无本本本本本124;WW124;WW124;WW124;;;;中国中国中国|;;中国中国中国中国中国中国中国中国(124;;中国(124;;;;;;中国中国中国中国中国(124;;;中国中国)中国中国中国中国中国中国中国中国)))的中国(124;;;;;;;;;;;;中国(124;中国(124;;;中国中国中国中国)))))| lk | lm | lm | ls | ls | mh | mh | mn | mo | mo | oy | so | rn | tn | tn | ts | ts | w | w | wd | wd | wh | wh | wh | wx | | | x | | x | wd | | | 4 | |{ System.out.println(“汽车模板”+汽车); } } } },java,regex,Java,Regex,我试图让它与1980-2015年的汽车牌照相匹配(我知道这不是我的模式),但我一直得到一个“无与伦比的收盘”)错误 因此,例如“2005-WW-1”应该是唯一与模式匹配的输入。您的正则表达式包含2个左括号(()和3个右括号()) 错误 不匹配的结尾“')” 这是相当描述性的 我假设您必须在靠近末端的某个位置添加一个开口括号: import java.util.ArrayList; import java.util.List; public class ValidateDemo { pu

我试图让它与1980-2015年的汽车牌照相匹配(我知道这不是我的模式),但我一直得到一个“无与伦比的收盘”)错误


因此,例如“2005-WW-1”应该是唯一与模式匹配的输入。

您的正则表达式包含2个左括号(
)和3个右括号(

错误

不匹配的结尾“')”

这是相当描述性的

我假设您必须在靠近末端的某个位置添加一个开口括号:

import java.util.ArrayList;
import java.util.List;

public class ValidateDemo {
    public static void main(String[] args) {
        List<String> input = new ArrayList<String>();
        input.add("2005-WW-1");
        input.add("3012-W-223");
        input.add("1952-WX-431");
        input.add("19998-d-4134");
        input.add("1899-c-7465");


        for (String car : input) {
            if (car.matches("^\b(19[3-9][0-9]|200[0-9]|201[0-2])\b-?(KK|kk|ww|WW|c|C|ce|CE|cn|CN|cw|CW|d|D|dl|DL|g|G|ke|KE|ky|KY|l|L|ld|LD|lh|LH|lk|LK|lm|LM|ls|LS|mh|MH|mn|MN|mo|MO|oy|OY|so|SO|rn|RN|tn|TN|ts|TS|w|W|wd|WD|wh|WH|wx|WX)-?\\d{1,4}\\d)$")) {
                System.out.println("Car Template " + car);
            }
        }
    }
}
我的正则表达式不充分,但我相信这就是你想要的:

-?\\d{1,4}\\d)$
你为什么不直接获取前4个字符,看看它们是否在一个范围内

-?(\\d{1,4}\\d)$
var year=Integer.Parse(myString.SubString(0,4));//省略错误检查
如果(年份>1985年和<2005年){}
  • 从正则表达式末尾删除最后一个右括号-它应该看起来像
    -?\\d{1,4}\\d$”
    或更简单的
    \\d{2,5}$
  • 如果希望它表示单词边界,请将
    \b
    (退格符号)更改为
    \\b
  • 另外,不要用正则表达式检查整数范围,因为它不是进行此操作的合适工具。维护这样的正则表达式将是一场噩梦。相反,将您感兴趣的部分转换为整数(您可以使用
    integer.parseInt(String)
    )并使用比较运算符的正确组合(
    =
  • 最后你有一个额外的结束语
  • \b
    应该是
    \\b
  • 删除结尾处的
    \\d
    (如果您只想匹配2到5,则将其前面的一个更改为{2,5})
  • 因此,这是可行的:

    var year = Integer.Parse(myString.SubString(0, 4)); // Error checking omitted
    
    if(year > 1985 && year < 2005) { }
    

    还请注意,这与1930年以后的车牌匹配,而不是您在文本中指定的1980年的车牌匹配。

    我建议类似于Pshemo的答案,实现为:

    if (car.matches("^\\b(19[3-9][0-9]|200[0-9]|201[0-2])\\b-?(KK|kk|ww|WW|c|C|ce|CE|cn|CN|cw|CW|d|D|dl|DL|g|G|ke|KE|ky|KY|l|L|ld|LD|lh|LH|lk|LK|lm|LM|ls|LS|mh|MH|mn|MN|mo|MO|oy|OY|so|SO|rn|RN|tn|TN|ts|TS|w|W|wd|WD|wh|WH|wx|WX)-?\\d{1,4}$")) {
    
    import java.util.ArrayList;
    导入java.util.List;
    导入java.util.regex.*;
    公共类ValidateDemo
    {
    公共静态void main(字符串[]args){
    列表输入=新的ArrayList();
    输入。添加(“2005-WW-1”);
    输入。添加(“3012-W-223”);
    输入。添加(“1952-WX-431”);
    输入。添加(“19998-d-4134”);
    输入。添加(“1899-c-7465”);
    字符串re=“^(\\d+)-?(KK | WW | C | CE | CN | CW | d | DL | k | KY | L | LD | LH | LK | LM LS | MH | MN | MO | OY | SO | RN | TN | TS | W | WD | | | | x | d | 4;
    Pattern p=Pattern.compile(re,Pattern.CASE\u不区分大小写);
    for(字符串车:输入){
    匹配器m=匹配器p(汽车);
    系统输出打印(car+“-”+m.matches()+“-”);
    系统输出打印(m组(1));
    int year=Integer.parseInt(m.group(1));
    
    如果(年份>=1980&&year)结尾处的大括号(就在“
    $”
    ”之前)没有开始大括号。感谢您修复了错误,但我的年份范围仍然不起作用。有什么想法吗?
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.*;
    
    public class ValidateDemo
    {
        public static void main(String[] args) {
            List<String> input = new ArrayList<String>();
            input.add("2005-WW-1");
            input.add("3012-W-223");
            input.add("1952-WX-431");
            input.add("19998-d-4134");
            input.add("1899-c-7465");
    
            String re = "^(\\d+)-?(KK|WW|C|CE|CN|CW|D|DL|G|KE|KY|L|LD|LH|LK|LM|LS|MH|MN|MO|OY|SO|RN|TN|TS|W|WD|WH|WX)-?\\d{1,4}$";
            Pattern p = Pattern.compile(re, Pattern.CASE_INSENSITIVE);
    
            for (String car : input) {
                Matcher m = p.matcher(car);
                System.out.print(car + " - " + m.matches() + " - ");
                System.out.print(m.group(1));
                int year = Integer.parseInt(m.group(1));
                if( year >= 1980 && year <= 2015 ) System.out.println(" <-- CORRECT");
                else System.out.println();
            }
        }
    }