用正则表达式把"在一九四九年新中国成立"中的中文数字替换位阿拉伯数字
时间: 2023-12-05 15:06:39 浏览: 23
好的,可以使用如下正则表达式进行替换:
```python
import re
text = "在一九四九年新中国成立"
pattern = "[一二三四五六七八九零]+"
chinese_to_arabic = {"一": "1", "二": "2", "三": "3", "四": "4", "五": "5",
"六": "6", "七": "7", "八": "8", "九": "9", "零": "0"}
result = re.sub(pattern, lambda m: chinese_to_arabic[m.group()], text)
print(result)
```
输出结果为:
```
在1949年新中国成立
```
注意,这里使用了一个 lambda 函数来将中文数字替换为对应的阿拉伯数字。`chinese_to_arabic` 字典中存储了中文数字和阿拉伯数字的对应关系。
相关问题
如何用正则表达式将一段长度20的数字中的11至13位替换为131
如果你使用的是Python语言,可以用 re 模块中的 sub 方法来实现:
```python
import re
# 假设原始字符串为 s
s = "12345678901234567890"
# 使用正则表达式替换11至13位为"131"
s = re.sub(r'^(.{10})(.{3})(.*)$', r'\1' + "131" + r'\3', s)
print(s)
```
输出结果为:
```
12345678901334567890
```
正则表达式的解释:
- `^` 表示匹配字符串开头
- `.{10}` 表示匹配前10个字符,也就是第1至第10位的数字
- `.{3}` 表示匹配中间的3个数字,也就是第11至第13位的数字
- `.*` 表示匹配剩余的字符,也就是第14至第20位的数字
- `$` 表示匹配字符串结尾
使用 `'\1' + "131" + r'\3'` 替换整个字符串。`\1` 代表第一组匹配的内容(也就是前10个字符),`\3` 代表第三组匹配的内容(也就是剩余的字符)。
用正则表达式判断输入的是不是四位数字
可以使用如下正则表达式判断输入的是否为四位数字:
```
^\d{4}$
```
其中 `^` 表示匹配字符串的开始,`\d` 表示匹配任意一个数字字符,`{4}` 表示匹配连续出现 4 次前面的字符,`$` 表示匹配字符串的结束。整个正则表达式的含义是从字符串开头到结尾都只包含 4 个数字字符。
可以用以下 Python 代码实现:
```python
import re
def is_four_digits(num_str):
pattern = r'^\d{4}$'
return bool(re.match(pattern, num_str))
# example usage
print(is_four_digits('1234')) # True
print(is_four_digits('12345')) # False
print(is_four_digits('abcd')) # False
```