在阅读App Engine documentation for Java时,我遇到了这个正则表达式:
[0-9A-Za-z._-]{0,100}
。我在维基百科页面上阅读了正则表达式,但仍然无法正确解码这个。
App Engine文档提到了有关命名空间的有效字符串的以下内容:
如果未指定namespace的值,则命名空间将设置为空字符串。命名空间字符串是任意的,但也限制为最多100个字母数字字符,句点,下划线和连字符。更明确地说,命名空间字符串必须与正则表达式[0-9A-Za-z ._-] {0,100}匹配。
有人可以帮助我分解正则表达式,以帮助我理解正则表达式中提到的模式如何满足上面提到的命名空间的先决条件吗?
一如既往,非常感谢帮助!!
答案 0 :(得分:2)
教男人如何钓鱼
此处的所有人都可能会告诉您将此表达式转储到regex101等工具中。
您不仅会了解您的表达方式的含义,还会了解它的调整部分如何改变结果。
这里另一个流行的在线工具是Debuggex可视化。
答案 1 :(得分:1)
通常方括号表示“其中一个内容”
0-9
,A-Z
,a-z
,您可能会弄清楚它们的含义。这些是你可以配置的范围(所以如果你想要你可以做3-7等)
._-
表示“句号,下划线或连字符”
所以[0-9A-Za-z._-]
应该表示“字母数字字符,句号,下划线或连字符之一”
{0,100}
只是给出前一组(我认为可能是术语?)的次数(在这种情况下,0到100次,包括(我认为))
编辑:看看@ zx81的答案呢!从长远来看,他的建议将比我的答案更有用。
答案 2 :(得分:1)
方括号表示可以使用括号内的任何字符。这称为字符类。
[abc]会匹配" a"," b"或" c"但不是" d"。
您还可以指定字符类中的范围,以指示范围内的任何字符都应匹配。
[a-e]表示与[abcde]
相同
在正则表达式中,[0-9A-Za-z ._-]匹配字母数字字符,句点,下划线或连字符。三个范围0-9,A-Z和a-z分别覆盖数字,小写和大写字母。
括号表示前面的字符可以多次匹配。
{3,5}表示"字符' a',重复3-5次"。
即。它匹配" aaa"和" aaaaa"但不是" aa"或" aaaaaa"。
我们可以将花括号与字符类组合起来,以表明我们想要多次匹配字符类中的任何字符。
[ab] {0,5}表示"混合了' a'和' b',长度为零到五个字符"
即。它匹配" aa"," bbb"," ababa"和""但不是" ababab"或" abc"
结合这两个概念,我们可以看到正则表达式如何与文本描述匹配
[0-9A-Za-z ._-] {0,100}表示" 0-9,AZ,az,。,_和 - 的混合,长度为0到100个字符"