在python中用正则表达式提取冒号或括号前的字符串

2024-09-27 21:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从下面的字符串中提取字符串muscle pain。 我需要使用一个适用于所有三种情况的正则表达式。在

string1 = 'A1 muscle pain: immunotherapy'
string2 = 'A2B_45 muscle pain: topical medicine e.g. ....'
string3 = 'A2_45 muscle pain (pain): topical medicine e.g. ....'

以下代码适用于string1string2。但它不适用于string3。我得到的总是muscle pain (pain)。有人能帮我吗。我试了很多次不同的表情,但不知道怎么做。在

^{pr2}$

Tags: 字符串代码a2a1情况表情painstring1
2条回答

可以将表达式缩短为:

^A\S+\s([^:(]*)(?=:|\s\()
  • ^A断言字符串开头的位置。在
  • \S+任何非空白字符。在
  • \s空白字符。在
  • ([^:(]*)捕获组。匹配并捕获(括号或]括号以外的任何内容。在
  • (?=:|\s\()正前瞻:或后跟(的空白。在

现场试用here。在


Python代码段:

^{pr2}$

试试这个模式:^[\dA-Z_]+ ([^\(:]+)。在

它在beging处以[\dA-Z_]+开头(注意锚定^),然后是空格。 现在,开始捕获组,直到遇到一个不需要的字符:[^\(:]。 您可以添加更多“不需要的”字符来改变正则表达式,使之与之不同。在

第一个捕捉组就是你想要的。在

Demo

您可以尝试此模式在第三次匹配后删除空格:^[\dA-Z_]+ ([\w ]+)(?=(:| \())See demo.

相关问题 更多 >

    热门问题