提取字符串第一部分的正则表达式
我有以下短语列表:
[
'This is erleada comp. recub. con película 60 mg.',
'This is auxina e-200 uicaps. blanda 200 mg.',
'This is ephynalsol. iny. 100 mg.',
'This is paracethamol 100 mg.'
]
我需要得到以下结果:
[
'This is erleada.',
'This is auxina.',
'This is ephynalsol.',
'This is paracethamol.'
]
我编写了以下函数来清理短语:
def clean(string):
sub_strings = [".","iny","comp","uicaps]
try:
string = [string[:string.index(sub_str)].rstrip() for sub_str in sub_strings]
return string
except:
return string
并按如下方式使用它:
for phrase in phrases:
drug = clean(phrase)
回答
这应该这样做:
import re
phrases = [
'This is erleada comp. recub. con película 60 mg.',
'This is auxina e-200 uicaps. blanda 200 mg.',
'This is ephynalsol. iny. 100 mg.',
'This is paracethamol 100 mg.'
]
pattern = re.compile("^This is w*")
for phrase in phrases:
match = pattern.search(phrase)
print(match.group(0) + ".")
输出:
This is erleada.
This is auxina.
This is ephynalsol.
This is paracethamol.
说明:
您会看到我们使用了正则表达式模式^This is w*。下面是它的工作原理。
^表示行的开始。所以^This is意味着你的行必须以This is.w匹配以下单个字符范围a-z,A-Z,0-9, 和_w*在上一点中,我说w匹配a-zA-Z0-9_范围内的单个字符。请注意,有一个*afterw。*代表零个或多个。如果使用*afterw,它将匹配所有满足w并放置的字符一个接一个。- 简而言之:
^This is表示开头This is并w*表示匹配范围内的所有字符w。由于空格,逗号,w句号不满足于,它将在该点停止匹配并返回类似This is something.