首页 > 试题广场 >

以下哪一个正则表达式不能与字符串“https:www.t

[单选题]

以下哪一个正则表达式不能与字符串“https://www.tensorflow.org/”(不含引号)匹配?()

  • [a-z]+://[a-z.]+/
  • https[://]www[.]tensorflow[.]org[/]
  • [https]+://www.tensorflow.org/
  • [a-zA-Z.:/]+

正则表达式的规则

1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。

2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。

3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。

4. ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。

5. .表示匹配任意的字符。

6. \d表示数字。

7. \D表示非数字。

8. \s表示由空字符组成,[ \t\n\r\x\f]。

9. \S表示由非空字符组成,[^\s]。

10. \w表示字母、数字、下划线,[a-zA-Z0-9_]。

11. \W表示不是由字母、数字、下划线组成。

12. ?: 表示出现0次或1次。

13. +表示出现1次或多次。

14. *表示出现0次、1次或多次。

15. {n}表示出现n次。

16. {n,m}表示出现n~m次。

17. {n,}表示出现n次或n次以上。

18. XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。

19. X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。

20. (X)子表达式,将X看做是一个整体

详见:https://www.jianshu.com/p/3c076c6b2dc8
发表于 2020-07-15 17:07:34 回复(72)
[://]
这是个很明显的陷阱
[ ] 里面是不重复的,所以等价于[:/]
如果[ ]后面没有带+号的话,是不会贪婪匹配的,就只能匹配到://中的其中一个 
编辑于 2019-06-01 10:15:45 回复(2)
public class Test {

    public static void main(String[] args) {
        String content = "https://www.tensorflow.org/";

        String patternA = "[a-z]+://[a-z.]+/";
        String patternB = "https[://]www[.]tensorflow[.]org[/]";
        String patternC = "[htps]+://www.tensorflow.org/";
        String patternD = "[a-zA-Z.:/]+";

        System.out.println(Pattern.matches(patternA, content)); // true
        System.out.println(Pattern.matches(patternB, content)); // false
        System.out.println(Pattern.matches(patternC, content)); // true
        System.out.println(Pattern.matches(patternD, content)); // true
    }
}

B. [://] 表示匹配 :// 中的任何一个字符,也就是匹配 : 或 /
C. [htps] 表示匹配 htps 中的任何一个字符,[htps]+ 表示一次或多次匹配前面的字符或子表达式,所以 [htps]+ 可以匹配 https
发表于 2019-10-12 10:11:08 回复(2)
[]只能匹配一个既定字符,://只能匹配一个。
发表于 2019-04-15 09:45:31 回复(0)
发表于 2019-04-15 17:35:50 回复(2)
三短一长选最长
发表于 2020-01-14 15:56:29 回复(0)
B的陷阱就在[://],如果是[://]+,那么,是可以匹配URL中的://的
发表于 2020-05-25 20:49:56 回复(0)
B
[://]  等于 [:/]匹配一次
C
[htps]+,[]是表达式,意思为匹配1次或多次h、t、p、s字符
发表于 2020-01-06 23:08:22 回复(0)
+号表示可以匹配一次或多次前面的原子
发表于 2019-05-22 12:30:02 回复(0)
正则表达式的规则 1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。 2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。 3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。 4. ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。 5. .表示匹配任意的字符。 6. \d表示数字。 7. \D表示非数字。 8. \s表示由空字符组成,[ \t\n\r\x\f]。 9. \S表示由非空字符组成,[^\s]。 10. \w表示字母、数字、下划线,[a-zA-Z0-9_]。 11. \W表示不是由字母、数字、下划线组成。 12. ?: 表示出现0次或1次。 13. +表示出现1次或多次。 14. *表示出现0次、1次或多次。 15. {n}表示出现n次。 16. {n,m}表示出现n~m次。 17. {n,}表示出现n次或n次以上。 18. XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。 19. X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。 20. (X)子表达式,将X看做是一个整体 详见:https://www.jianshu.com/p/3c076c6b2dc8
发表于 2021-07-26 20:23:21 回复(0)
c的htps怎么匹配?b,c不都错吗
发表于 2020-09-20 12:35:42 回复(0)
在正则表达式中,[]表示其中的元素任意一个,但是不允许重复. [://]明显/重复了.
发表于 2020-02-18 17:10:36 回复(0)
不应该是D吗,ABC都能匹配啊
发表于 2019-04-09 00:59:52 回复(0)
B选项中括号只能匹配其中的一个字符,如果要匹配:// 就必须在中括号后面加上一个+号,表示匹配一个或多个字符
发表于 2023-03-16 23:10:04 回复(0)
虽然我对正则表达式的使用总是不是很熟练(呃呃呃,其实是已经不熟练到不能用“熟练”来形容了。。。)
但是python的正则模块re,已经有了很好的match函数,可以帮我们检查是否是合法的匹配。匹配成功re.match方法返回一个匹配的对象,否则返回None。经过实验,就只有B返回None,所以不匹配。
发表于 2019-04-13 15:50:04 回复(0)
[] 里面的字符只能匹配一次,所以需要在[]外面添加+或者*。

还有个问题,[.]里面的点号 代表着任意字符还是说就代表点号本身这个字符?
实际操作下来, 感觉[]里面的字符不需要转义,就是字符本身,没有任何其他特殊含义。
发表于 2022-09-14 17:05:04 回复(0)
[]中的重复的元素只会显示一个,所以[://]表示[:/] []表示里面的元素可能出现
发表于 2022-09-13 22:48:47 回复(0)
[]里面应该是不重复的,B选项错误
发表于 2022-03-25 14:25:08 回复(1)
://明显带转义。只能匹配一个
发表于 2020-09-04 08:24:37 回复(1)
B,很阴险的题目...

[://] ==> 只能匹配一个字符
编辑于 2019-12-14 10:08:43 回复(0)