gpt4 book ai didi

regex - 如何构建一个关注出现次数但不关注出现位置的正则表达式?

转载 作者:行者123 更新时间:2023-12-01 02:40:20 27 4
gpt4 key购买 nike

我想构建一个匹配以下字符串的正则表达式:

包含全部或部分 4 个字符“A”、“B”、“C”和“D”的字符串

“ABCD”最多可以在任何位置出现一次。
例如,以下内容应匹配:

A,AB,CABD,DC,BDCA,ABC,...

以下不应该匹配:
ABA,BB,ABCC,DDAA,AACD...

你对我有什么建议吗?

最佳答案

这个应该这样做(Python语法):

if re.match(r"""
# Match string having max one each of A, B, C or D.
^ # Anchor to start of string.
(?=[^A]*(?:A[^A]*)?$) # Assert zero or one A max.
(?=[^B]*(?:B[^B]*)?$) # Assert zero or one B max.
(?=[^C]*(?:C[^C]*)?$) # Assert zero or one C max.
(?=[^D]*(?:D[^D]*)?$) # Assert zero or one D max.
[ABCD]+ # One or more of [ABDC].
\Z # Anchor to end of string.
""", text, re.VERBOSE):
# Successful match at the start of the string
else:
# Match attempt failed

这是一个 JavaScript 版本:

var re = /^(?=[^A]*(?:A[^A]*)?$)(?=[^B]*(?:B[^B]*)?$)(?=[^C]*(?:C[^C]*)?$)(?=[^D]*(?:D[^D]*)?$)[ABCD]+$/;
if (re.test(text)) {
// Successful match
} else {
// Match attempt failed
}

关于regex - 如何构建一个关注出现次数但不关注出现位置的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com