用python写一段正则表达式,匹配规则如下,十八位纯数字的字符或者18位字符以x或X结尾
时间: 2024-05-03 10:23:17 浏览: 8
```
import re
pattern = r'^\d{18}|^\d{17}[xX]$'
string1 = '123456789012345678'
string2 = '12345678901234567x'
string3 = '12345678901234567X'
string4 = '1234567890123456789'
print(re.match(pattern, string1)) # <re.Match object; span=(0, 18), match='123456789012345678'>
print(re.match(pattern, string2)) # <re.Match object; span=(0, 18), match='12345678901234567x'>
print(re.match(pattern, string3)) # <re.Match object; span=(0, 18), match='12345678901234567X'>
print(re.match(pattern, string4)) # None
```
解释:
- `^` 匹配字符串的开头
- `\d` 匹配数字字符
- `{18}` 匹配前面的字符18次
- `|` 表示或者
- `\d{17}` 匹配前面的字符17次
- `[xX]` 匹配x或X
- `$` 匹配字符串的结尾
所以这个正则表达式可以匹配18位纯数字的字符或者18位字符以x或X结尾的字符串。
相关问题
Python中用正则表达式验证身份证号,验证规则:长度必须为15位或18位,最后一位是校验位,可能为数字或字符x或X。
可以使用Python中的re模块来进行正则表达式的匹配,以下是验证身份证号的正则表达式:
```python
import re
def check_id(id):
pattern = r'^\d{15}$|^\d{18}$|^\d{17}[xX]$'
if re.match(pattern, id):
return True
else:
return False
```
其中,正则表达式`r'^\d{15}$|^\d{18}$|^\d{17}[xX]$'`表示:
- `^`和`$`分别表示字符串的开头和结尾
- `\d`表示匹配数字
- `{15}`和`{18}`表示前面的模式匹配15次或18次
- `[xX]`表示匹配字符x或X
调用`check_id`函数,传入身份证号码作为参数即可判断是否符合规则。
Python使用正则表达式匹配字符串结尾
使用正则表达式匹配字符串结尾可以使用$符号。$符号匹配字符串的末尾。
示例代码:
```python
import re
string = "Hello World!"
pattern = r"World!$"
match = re.search(pattern, string)
if match:
print("字符串以 'World!' 结尾")
else:
print("字符串不以 'World!' 结尾")
```
输出:
```
字符串以 'World!' 结尾
```
在正则表达式中,$符号也可以用于匹配空行。例如,r"^$"匹配空行。