gpt4 book ai didi

python - 使用正则表达式检查测试字符串是否为固定格式

转载 作者:行者123 更新时间:2023-11-28 20:26:32 27 4
gpt4 key购买 nike

我想使用正则表达式确保字符串的格式为“999.999-A9-Won”,并且没有任何空格、制表符或换行符。

  1. 在 0 - 9 范围内可能有 2 或 3 个数字。
  2. 后跟句点“.”
  3. 再次后跟 0 - 9 范围内的 2 或 3 个数字
  4. 后跟连字符、字符“A”和 0 - 9 之间的数字。
  5. 后面可以跟任何东西。

示例:87.98-A8-abcdef

到目前为止我得出的代码是:

testString = "87.98-A1-help"
regCompiled = re.compile('^[0-9][0-9][.][0-9][0-9][-A][0-9][-]*');
checkMatch = re.match(regCompiled, testString);
if checkMatch:
print ("FOUND")
else:
print("Not Found")

这似乎行不通。我不确定我遗漏了什么,这里的问题是我没有检查空格、制表符和换行符,也没有对小数点前后的整数进行硬编码。

最佳答案

使用 {m,n} 可以指定模式可以重复的次数,\d 字符类匹配所有数字。 \S 字符类匹配任何不是 空格的字符。使用这些你的正则表达式可以简化为:

re.compile(r'\d{2,3}\.\d{2,3}-A\d-\S*\Z')

另请注意 \Z anchor ,使 \S* 表达式一直匹配到字符串的末尾。此处不允许有空格(换行符、制表符等)。如果将其与 .match() method 结合使用您确保测试字符串中的所有字符都符合模式,仅此而已。参见 search() vs. match()有关 .match() 的更多信息。

一个小演示:

>>> import re
>>> pattern = re.compile(r'\d{2,3}\.\d{2,3}-A\d-\S*\Z')
>>> pattern.match('87.98-A1-help')
<_sre.SRE_Match object at 0x1026905e0>
>>> pattern.match('123.45-A6-no whitespace allowed')
>>> pattern.match('123.45-A6-everything_else_is_allowed')
<_sre.SRE_Match object at 0x1026905e0>

关于python - 使用正则表达式检查测试字符串是否为固定格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11385050/

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