python中查找m_str中是否包含f_str,若包含则输出找到的所有子串
时间: 2023-05-29 08:07:30 浏览: 46
可以使用字符串的find()方法或者正则表达式来实现。
方法一:使用find()方法
```python
m_str = "hello world, this is python"
f_str = "is"
start = 0
while True:
pos = m_str.find(f_str, start)
if pos == -1:
break
print(m_str[pos:pos+len(f_str)])
start = pos + 1
```
输出:
```
is
```
方法二:使用正则表达式
```python
import re
m_str = "hello world, this is python"
f_str = "is"
pattern = re.compile(f_str)
match_list = pattern.findall(m_str)
for match in match_list:
print(match)
```
输出:
```
is
```
相关问题
正则表达式,从键盘输入两个字符串。第一个字符串命名为m_str,第二个字符串命名为f_str。在f_str的中间(非首字符、非末字符)包含一个‘*’,‘*’代表一个或多个字符。 现请编写程序,查找m_str中是否包含f_str,若包含则输出找到的所有子串。用python
代码实现如下:
```python
import re
m_str = input('请输入第一个字符串m_str:')
f_str = input('请输入第二个字符串f_str:')
# 将f_str中的*替换为正则表达式中的通配符.+
pattern = f_str.replace('*', '.+')
# 在m_str中查找符合正则表达式的子串
result = re.findall(pattern, m_str)
if len(result) > 0:
print('在m_str中找到如下子串:')
for s in result:
print(s)
else:
print('在m_str中未找到任何子串。')
```
使用示例:
```
请输入第一个字符串m_str:abc123abcdef
请输入第二个字符串f_str:a*cde
在m_str中找到如下子串:
abc123abcdef
abcde
```
从键盘输入两个字符串。第一个字符串命名为m_str,第二个字符串命名为f_str。在f_str的中间(非首字符、非末字符)包含一个‘*’,该字符常作为通配符,即代表一个或多个字符。现请编写程序,查找m_str中是否包含f_str,若包含则输出找到的所有子串。
以下是Python的实现代码:
```python
m_str = input("请输入第一个字符串:")
f_str = input("请输入第二个字符串:")
if '*' not in f_str:
if f_str in m_str:
print("找到子串:", f_str)
else:
print("未找到子串")
else:
f_parts = f_str.split('*')
if len(f_parts) != 2:
print("通配符位置不正确")
else:
f_prefix, f_suffix = f_parts[0], f_parts[1]
if f_prefix in m_str and f_suffix in m_str:
start_index = m_str.find(f_prefix) + len(f_prefix)
end_index = m_str.rfind(f_suffix)
if start_index <= end_index:
substrings = m_str[start_index:end_index].split(f_prefix)
for substring in substrings:
if f_suffix in substring:
print("找到子串:", f_prefix + substring + f_suffix)
else:
print("未找到子串")
else:
print("未找到子串")
```
该代码首先判断f_str是否包含通配符,如果不包含,则直接在m_str中查找是否包含f_str即可。如果包含通配符,则需要将f_str拆分成前缀和后缀,然后在m_str中查找前缀和后缀的位置,最终找到所有符合条件的子串。注意,如果通配符位置不正确或者前缀和后缀在m_str中不存在,则需要输出未找到子串的提示。