如何在正则表达式中表示重复的固定次数?
我想知道是否有更好的方法来表示正则表达式中的修复重复量。例如,如果我只想匹配14个字母/数字,我正在使用哪个将匹配一个单词,而不是匹配,有没有一种方便的方法可以做到这一点?我目前在java中这样做,但我想这可能也适用于其他语言。提前致谢。^\w\w\w\w\w\w\w\w\w\w\w\w\w\w$
UNL075BE499135
UNL075BE499135AAA
我想知道是否有更好的方法来表示正则表达式中的修复重复量。例如,如果我只想匹配14个字母/数字,我正在使用哪个将匹配一个单词,而不是匹配,有没有一种方便的方法可以做到这一点?我目前在java中这样做,但我想这可能也适用于其他语言。提前致谢。^\w\w\w\w\w\w\w\w\w\w\w\w\w\w$
UNL075BE499135
UNL075BE499135AAA
有限重复语法用于代替星号/加号/问号。{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
所有重复元字符都具有相同的优先级,因此就像您可能需要对 、 和 进行分组一样,您也可以对 进行分组。*
+
?
{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"
基本上,只要 a 是“零或多”的重复元字符,就可以使用重复构造。请注意,反之亦然:您可以在查找后置中使用有限重复,但不能使用,因为Java不正式支持无限长度的lookbehind。*
{...}
*
正
则表达式的 .* 和 .*之间的区别?
regex{n,}?
== regex{n}
?a{1}b{0,1}
ab?