我想知道是否有更好的代表正则表达式中的重复数量.例如,如果我只想匹配14个字母/数字,我使用^\w\w\w\w\w\w\w\w\w\w\w\w\w\w$
哪个会匹配一个单词UNL075BE499135
而不匹配UNL075BE499135AAA
是否有方便的方法呢?我现在正在java中这样做,但我想这可能也适用于其他语言.提前致谢.
pol*_*nts 24
有限重复语法用于{m,n}
代替星号/加号/问号.
X{n} X, exactly n times
X{n,} X, at least n times
X{n,m} X, at least n but not more than m times
Run Code Online (Sandbox Code Playgroud)
所有重复元字符具有相同的优先级,所以就像您可能需要为分组*
,+
和?
,你也可以{n,m}
.
ha*
匹配例如 "haaaaaaaa"
ha{3}
只匹配 "haaa"
(ha)*
匹配例如 "hahahahaha"
(ha){3}
只匹配 "hahaha"
此外,就像*
,+
和?
,你可以分别添加?
和+
不情愿和占有重复修饰符.
System.out.println(
"xxxxx".replaceAll("x{2,3}", "[x]")
); "[x][x]"
System.out.println(
"xxxxx".replaceAll("x{2,3}?", "[x]")
); "[x][x]x"
Run Code Online (Sandbox Code Playgroud)
基本上任何地方*
都是"零或多"的重复元字符,您可以使用{...}
重复构造.请注意,反之亦然:您可以在lookbehind中使用有限重复,但是您无法使用,*
因为Java没有正式支持无限长度的lookbehind.
.*
和.*?
对正则表达式regex{n,}?
== regex{n}
?a{1}b{0,1}
而不是ab?
归档时间: |
|
查看次数: |
78558 次 |
最近记录: |