Python 固定字符长度的正则表达式
Python regex for fixed character length
我是正则表达式的新手,正在尝试创建一个简单的正则表达式。到目前为止,我得到的结果适用于我要测试的格式。
import re
pattern = '^\+61-' #to ensure that the given string starts with +61
x = re.search(pattern, '+61-457999999')
print(x)
输出:
<re.Match object; span=(0, 4), match='+61-'>
我接下来要做的是添加字符数检查。所以我尝试将 {}
添加到我的模式的末尾。但这似乎不起作用。我尝试了各种组合:
例如'^\+61-{1}'
- 似乎在开头寻找 1 次出现的 '+61-'
。
正则表达式的适当添加是什么:
- 起始字符总是
'+61-4'
- 给定输入的长度始终为 13
这听起来像是一个简单的问题,但我找不到与 Python 和描述的场景完全匹配的答案。
一个通用的解决方案是将长度与前瞻相匹配:(?=^.{13}$)
。完整示例:
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+61-457999999'))
True
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+62-457999999'))
False
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+61-4579999999'))
False
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+61-45799999'))
False
你也可以更精确地匹配格式,假设 -
:
之后的数字
>>> bool(re.fullmatch(r"\+61-\d{9}", '+61-457999999'))
True
>>> bool(re.fullmatch(r"\+61-\d{9}", '+62-457999999'))
False
>>> bool(re.fullmatch(r"\+61-\d{9}", '+61-4579999999'))
False
>>> bool(re.fullmatch(r"\+61-\d{9}", '+61-45799999'))
False
如果要匹配起始子字符串后剩余 9 个字符的任何内容,请使用 .{9}
。
'^\+61-{1}'
不起作用的原因是它指定了前导字符 -
出现 1 次。 {1}
总是隐含在每个字符之后,所以这与 '^\+61-'
.
没有什么不同
顺便说一句,总是在 Python 中使用 raw strings r""
for regex patterns。
另外,您在 Python 中,因此可以使用 len
.
轻松检查字符串的长度
我是正则表达式的新手,正在尝试创建一个简单的正则表达式。到目前为止,我得到的结果适用于我要测试的格式。
import re
pattern = '^\+61-' #to ensure that the given string starts with +61
x = re.search(pattern, '+61-457999999')
print(x)
输出:
<re.Match object; span=(0, 4), match='+61-'>
我接下来要做的是添加字符数检查。所以我尝试将 {}
添加到我的模式的末尾。但这似乎不起作用。我尝试了各种组合:
例如'^\+61-{1}'
- 似乎在开头寻找 1 次出现的 '+61-'
。
正则表达式的适当添加是什么:
- 起始字符总是
'+61-4'
- 给定输入的长度始终为 13
这听起来像是一个简单的问题,但我找不到与 Python 和描述的场景完全匹配的答案。
一个通用的解决方案是将长度与前瞻相匹配:(?=^.{13}$)
。完整示例:
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+61-457999999'))
True
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+62-457999999'))
False
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+61-4579999999'))
False
>>> bool(re.search(r"(?=^.{13}$)^\+61-", '+61-45799999'))
False
你也可以更精确地匹配格式,假设 -
:
>>> bool(re.fullmatch(r"\+61-\d{9}", '+61-457999999'))
True
>>> bool(re.fullmatch(r"\+61-\d{9}", '+62-457999999'))
False
>>> bool(re.fullmatch(r"\+61-\d{9}", '+61-4579999999'))
False
>>> bool(re.fullmatch(r"\+61-\d{9}", '+61-45799999'))
False
如果要匹配起始子字符串后剩余 9 个字符的任何内容,请使用 .{9}
。
'^\+61-{1}'
不起作用的原因是它指定了前导字符 -
出现 1 次。 {1}
总是隐含在每个字符之后,所以这与 '^\+61-'
.
顺便说一句,总是在 Python 中使用 raw strings r""
for regex patterns。
另外,您在 Python 中,因此可以使用 len
.