如何在阿拉伯语字符串中提取两个子串间的指定内容?
问题分析与解决
你的代码运行失败的原因是正则表达式的匹配逻辑完全颠倒:原字符串里الطالب在最开头,الي在يذهب之后,而你写的'الي(.*)الطالب'是在找الي之后到الطالب之间的内容,这在原字符串里根本不存在,导致re.search返回None,调用group(1)自然会报错。
下面是两种可行的解决方法:
方法1:直接拆分字符串提取
因为目标内容是字符串中的第二个词,直接用split()拆分后取对应索引即可:
string = "الطالب يذهب الي الممدرسة" words = string.split() print(words[1]) # 输出: يذهب
方法2:修正正则表达式
如果一定要用正则,需要匹配الطالب后面、الي前面的内容,正则要写成这样:
import re string = "الطالب يذهب الي الممدرسة" res = re.search(r'الطالب\s+(.*?)\s+الي', string) if res: print(res.group(1)) # 输出: يذهب
这里用\s+匹配任意数量的空白字符,.*?是非贪婪匹配,确保只捕获两个关键词之间的目标内容。
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

