提取字符串第一部分的正则表达式

我有以下短语列表:

[
  '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_范围内的单个字符。请注意,有一个*after w*代表零个或多个。如果使用*after w,它将匹配所有满足w并放置的字符一个接一个。
  • 简而言之:^This is表示开头This isw*表示匹配范围内的所有字符w。由于空格,逗号,w句号不满足于,它将在该点停止匹配并返回类似This is something.

以上是提取字符串第一部分的正则表达式的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>