正则表达式,匹配不超过 n 次
Regex, That Matches No more Than n Occurrences
我试图找到一个正则表达式,它匹配不超过 n 个连续的,比如三个,例如,一个字符的出现;在三个字符的情况下是 "a":
abbaa - 火柴;
ammaaa - 不匹配(三个连续的 a),有一个 "a",但必须丢弃整个表达式,因为三个 "a's"
谢谢。
使用 {m,n}
语法(如果您的环境提供它,它可能会提供。
{m,n}
允许前一个字符出现 m
到 n
次(含)。
示例:
/a{0,3}/
匹配 a
.
的 0 到 3 次
/a{3,}/
匹配 3 次或更多次。
/a{3}/
恰好匹配 3 次。
在下面的示例中,我将上述语法与 negative lookahead 和 negative lookbehind.
配对
(?<!a)a{0,3}(?!a)
匹配 0 到 3 次出现的 a
,其中在这 0-3 次出现之前或之后没有 a
。
可以指定一个字符,也可以泛化为所有字符。
此外,不确定您是否正在尝试测试或匹配整个字符串,但假设
这是整个字符串。
广义化
^(?:(\w)(?!{2})|\W)+$
已解释
^ # Beginning of string
(?: # Cluster
( \w ) # (1), a word character
(?! {2} ) # Not 2 more of same in a sequence
| # or,
\W # Not a word character
)+ # End Cluster, 1 to many times
$ # End of string
您可以用特定字符代替 \w
和 \W
通过替换你想要的。
字符 a
的示例为 a
和 [^a]
。
^(?:(a)(?!{2})|[^a])+$
或多个 [abc]
和 [^abc]
^(?:([abc])(?!{2})|[^abc])+$
我试图找到一个正则表达式,它匹配不超过 n 个连续的,比如三个,例如,一个字符的出现;在三个字符的情况下是 "a":
abbaa - 火柴;
ammaaa - 不匹配(三个连续的 a),有一个 "a",但必须丢弃整个表达式,因为三个 "a's"
谢谢。
使用 {m,n}
语法(如果您的环境提供它,它可能会提供。
{m,n}
允许前一个字符出现 m
到 n
次(含)。
示例:
/a{0,3}/
匹配 a
.
/a{3,}/
匹配 3 次或更多次。
/a{3}/
恰好匹配 3 次。
在下面的示例中,我将上述语法与 negative lookahead 和 negative lookbehind.
配对(?<!a)a{0,3}(?!a)
匹配 0 到 3 次出现的 a
,其中在这 0-3 次出现之前或之后没有 a
。
可以指定一个字符,也可以泛化为所有字符。
此外,不确定您是否正在尝试测试或匹配整个字符串,但假设
这是整个字符串。
广义化
^(?:(\w)(?!{2})|\W)+$
已解释
^ # Beginning of string
(?: # Cluster
( \w ) # (1), a word character
(?! {2} ) # Not 2 more of same in a sequence
| # or,
\W # Not a word character
)+ # End Cluster, 1 to many times
$ # End of string
您可以用特定字符代替 \w
和 \W
通过替换你想要的。
字符 a
的示例为 a
和 [^a]
。
^(?:(a)(?!{2})|[^a])+$
或多个 [abc]
和 [^abc]
^(?:([abc])(?!{2})|[^abc])+$