我想知道是否有更好的代表正则表达式中的重复数量.例如,如果我只想匹配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 次 |
| 最近记录: |