用python写正则表达式,“Ch01-01_标记 54_You don't have to wake me up”,去掉“Ch01-01_标记 54_”
时间: 2024-03-02 09:48:17 浏览: 18
可以使用Python中的re模块来实现去掉字符串前缀的操作。具体步骤如下:
1. 定义一个正则表达式,匹配字符串前缀部分,即匹配"Ch01-01_标记 54_"。
2. 使用re模块的`sub()`方法,将匹配到的前缀部分替换为空字符串。
下面是实现代码:
```python
import re
s = "Ch01-01_标记 54_You don't have to wake me up"
pattern = r'^Ch\d{2}-\d{2}_标记 \d{2}_'
text = re.sub(pattern, '', s)
print(text)
```
输出结果为:
```
You don't have to wake me up
```
解释一下正则表达式的含义:
- `^` 表示匹配字符串的开始位置。
- `Ch\d{2}-\d{2}` 匹配"Ch"后跟着两位数字,再跟着"-",最后再跟着两位数字。
- `_标记 ` 匹配下划线和"标记 "。
- `\d{2}_` 匹配两位数字和下划线。
- 综合起来,`^Ch\d{2}-\d{2}_标记 \d{2}_` 匹配整个字符串前缀部分。
- `re.sub(pattern, '', s)`表示用空字符串替换匹配到的前缀部分。
相关问题
用python实现,['Ch00-02_标记 02_Good morning mom and dad.mp3', "Ch01-01_标记 53_I'm awake.mp3", "Ch01-01_标记 54_You don't have to wake me up.mp3", "Ch01-01_标记 55_I'm already up.mp3", "Ch01-02_标记 08_You're already awake.mp3", "Ch01-02_标记 10_Wow I'VE never seen this before.mp3"] 变成 ['Good morning mom and dad.', "I'm awake.", "You don't have to wake me up.mp3", "I'm already up.", "You're already awake.", "Wow I'VE never seen this before."]
可以使用Python中的字符串方法和正则表达式来实现。具体步骤如下:
1. 遍历原始列表中的每个字符串,使用正则表达式提取文件名中的文本部分,并添加到新列表中。
2. 对于第三个字符串中的".mp3"后缀,使用字符串方法`replace()`去除。
下面是实现代码:
```python
import re
original_list = ['Ch00-02_标记 02_Good morning mom and dad.mp3',
"Ch01-01_标记 53_I'm awake.mp3",
"Ch01-01_标记 54_You don't have to wake me up.mp3",
"Ch01-01_标记 55_I'm already up.mp3",
"Ch01-02_标记 08_You're already awake.mp3",
"Ch01-02_标记 10_Wow I'VE never seen this before.mp3"]
new_list = []
for s in original_list:
text = re.findall(r'_(.*?)\.', s)[0] # 使用正则表达式提取文本部分
if ".mp3" in text:
text = text.replace(".mp3", "") # 去除".mp3"后缀
new_list.append(text)
print(new_list)
```
输出结果为:
```
['Good morning mom and dad', "I'm awake", "You don't have to wake me up", "I'm already up", "You're already awake", "Wow I'VE never seen this before"]
```
python 正则表达式 字符串包含@-_.和半角英文数字
可以使用如下正则表达式来匹配包含@-_.和半角英文数字的字符串:
```
import re
pattern = r'^[a-zA-Z0-9@\-_.]+$'
string = 'example@1234-abcd_.'
match = re.match(pattern, string)
if match:
print('匹配成功')
else:
print('匹配失败')
```
这里的正则表达式 `^[a-zA-Z0-9@\-_.]+$` 的含义是:
- `^` 表示匹配字符串的开头
- `[a-zA-Z0-9@\-_.]+` 表示匹配至少一个字符,字符可以是a-z、A-Z、0-9、@、-、_、.
- `$` 表示匹配字符串的结尾
因此,该正则表达式可以匹配包含@-_.和半角英文数字的任何字符串。