正则表达式根据特定字符数匹配字符串

时间:2018-11-20 09:59:01

标签: regex python-3.x

这不是重复的问题,其他问题与正则表达式的重复有关,我的问题是我们如何才能在正则表达式中获取/限制特定字符数以进行验证,我正在寻找一个仅在以下情况下匹配字符串的正则表达式该字符串的字符'的计数为1。 示例:

patt = #IDontKnow
s = "Shubham's"
if re.match(patt, s):
    print ("The string has only ONE '")
else:
    print ("The String has either less or more than ONE ' count")

2 个答案:

答案 0 :(得分:1)

为什么不只使用.count()

s = "Shubham's"
if s.count("\'") == 1:
    print ("The string has only ONE '")
else:
    print ("The String has either less or more than ONE ' count")

答案 1 :(得分:0)

我猜你在找什么?

import re
pat = "^[^\']*\'[^\']*$"
print (re.match(pat, "aeh'3q4'bl;5hkj5l;ebj3'"))
print (re.match(pat, "aeh3q4'bl;5hkj5l;ebj3'"))
print (re.match(pat, "aeh3q4bl;5hkj5l;ebj3'"))
print (re.match(pat, "'"))
print (re.match(pat, ""))

哪个输出:

None
None
<_sre.SRE_Match object; span=(0, 21), match="aeh3q4bl;5hkj5l;ebj3'">
<_sre.SRE_Match object; span=(0, 1), match="'">
None

"^[^\']*\'[^\']*$"做什么?

^匹配字符串的开头

[^\']*-*匹配[]中定义的0个或多个字符。在这里,我们使用^进行了取反设置。该集合定义为一个字符-',将其转义以使其看起来像\'。总而言之,该组与 '

以外的任意数量的任何字符匹配

\'-匹配一个唯一的字符'

$-匹配字符串的结尾。如果没有它,则可能包含部分'字符的部分匹配。您可以与上面进行比较:

print (re.match("^[^\']*\'[^\']*", "aeh'3q4'bl;5hkj5l;ebj3'"))

<_sre.SRE_Match object; span=(0, 7), match="aeh'3q4">