增强的strstr
题目描述
C 语言有一个库函数 char *strstr(const char *haystack, const char *needle)
, 实现在字符串 haystack
中查找第一次出现字符串 needle
的位置, 如果未找到则返回 null
.
现要求实现一个 strstr
的增强函数, 可以使用带可选段的字符串来模糊查询, 与 strstr
一样返回首次查找到的字符串位置.
可选段使用 []
标识, 表示该位置是可选段中任意一个字符即可满足匹配条件.
比如a[bc]
表示可以匹配ab
或ac
.
注意目标字符串中可选段可能出现多次.
输入描述
与 strstr
函数一样, 输入参数是两个字符串指针, `分别是源字符串和目标字符串.
输出描述
与 strstr
函数不同, 返回的是源字符串中, 匹配子字符串相对于源字符串地址的偏移 (从0开始算), 如果没有匹配返回 -1
.
补充说明: 源字符串中必定不包含 []
; 目标字符串中[]
必定成对出现, 且不会出现嵌套.
输入的字符串长度在 [1,100]
之间.
示例1
输入:
abcd
b[cd]
输出:
1
题解
Python
import re
def main():
# 读取输入
source = input()
assert 1 <= len(source) <= 100
pattern = input()
# 使用正则库
re_pattern = re.compile(pattern)
matches = re_pattern.search(source)
if matches:
print(matches.start())
else:
print(-1)
if __name__ == "__main__":
main()