如何构建一个关注出现次数而不是出现位置的正则表达式?
发布时间:2020-12-14 05:48:27 所属栏目:百科 来源:网络整理
导读:我想构建一个匹配以下字符串的正则表达式: 包含全部或部分4个字符“A”,“B”,“C”和“D”的字符串 “ABCD”最多可以出现在任何位置一次. 例如,预计以下内容匹配: A,AB,CABD,DC,BDCA,ABC,... 以下内容不匹配: ABA,BB,ABCC,DDAA,AACD... 你对我有什么建议
我想构建一个匹配以下字符串的正则表达式:
包含全部或部分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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |