用正则一行代码实现在python中的input只能输入数字
时间: 2023-10-21 22:11:32 浏览: 85
可以使用`re`模块的`fullmatch()`函数来实现一行代码的正则匹配。以下是示例代码:
```python
import re
num = input("请输入一个数字:")
while not re.fullmatch(r'\d+', num):
num = input("输入的不是数字,请重新输入:")
```
上述代码中,正则表达式`\d+`匹配一个或多个数字字符,`re.fullmatch()`函数会尝试将用户输入的字符串与正则表达式进行匹配,如果匹配成功,函数返回一个`Match`对象,否则返回`None`。`while`循环会不断要求用户输入数字,直到用户输入的字符串全部都是数字字符为止。如果用户输入的字符串不符合正则表达式,`re.fullmatch()`函数返回`None`,代码会继续要求用户重新输入。
相关问题
Python中使用正则表达式,在给定的两行输入中查找出小于100的整数并依次输出
可以使用Python内置的re模块来实现正则表达式的匹配和查找。以下是一种可能的实现:
```python
import re
# 两行输入
input1 = "abc 12 34 56 def"
input2 = "xyz 78 90 101 ghi"
# 正则表达式匹配小于100的整数
pattern = re.compile(r'\b(0|[1-9]\d{0,1})\b')
# 在两行输入中查找匹配项并输出
match1 = pattern.findall(input1)
match2 = pattern.findall(input2)
print(match1)
print(match2)
```
这段代码中,我们首先定义了两行输入 `input1` 和 `input2`。然后使用正则表达式模式 `\b(0|[1-9]\d{0,1})\b` 匹配小于100的整数。该正则表达式的含义如下:
- `\b`: 匹配单词边界,确保匹配项是一个独立的单词
- `(0|[1-9]\d{0,1})`: 匹配一个数字,可以是0到9之间的任意一个数字,或者是10到99之间的数字。其中,`|` 表示或,`\d{0,1}` 表示匹配0个或1个数字,即可以匹配个位数或十位数的数字。
- `\b`: 再次匹配单词边界,确保匹配项是一个独立的单词
最后,使用 `findall()` 方法在两行输入中查找匹配项,并将结果分别存储在 `match1` 和 `match2` 变量中。最后输出匹配结果即可。
python从键盘输入一行字符串,将该字符串写入文件,使用正则表达式提取文件中的电话号码
在Python中,你可以通过`input()`函数从用户处获取一行字符串,然后使用内置的`open()`函数创建或打开一个文件,使用`write()`方法将字符串写入文件。对于正则表达式提取电话号码,你可以使用`re`模块中的`findall()`函数,它能在给定的文本中找到所有匹配指定模式的子串。
下面是一个简单的例子:
```python
import re
# 从用户输入获取字符串
user_input = input("请输入一行需要保存并提取电话号码的字符串:")
# 创建或打开文件(如果不存在会自动创建)
with open('phone_numbers.txt', 'w') as f:
# 写入用户输入的字符串
f.write(user_input)
# 使用正则表达式查找电话号码(假设电话号码的格式为xxx-xxx-xxxx)
pattern = r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b'
with open('phone_numbers.txt', 'r') as f:
content = f.read()
phone_numbers = re.findall(pattern, content)
print("提取到的电话号码有:", phone_numbers)
```
在这个例子中,我们假设电话号码可以是三种常见格式:xxx-xxx-xxxx、xxx.xxx.xxxx 或 xxx.xxx-xxxx。正则表达式`\b\d{3}[-.]?\d{3}[-.]?\d{4}\b`用于匹配这些格式。
阅读全文