我试图从下面的字符串中提取字符串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. ....'
以下代码适用于string1
和string2
。但它不适用于string3
。我得到的总是muscle pain (pain)
。有人能帮我吗。我试了很多次不同的表情,但不知道怎么做。在
可以将表达式缩短为:
^A
断言字符串开头的位置。在\S+
任何非空白字符。在\s
空白字符。在([^:(]*)
捕获组。匹配并捕获(
括号或]
括号以外的任何内容。在(?=:|\s\()
正前瞻:
或后跟(
的空白。在现场试用here。在
Python代码段:
^{pr2}$试试这个模式:
^[\dA-Z_]+ ([^\(:]+)
。在它在beging处以
[\dA-Z_]+
开头(注意锚定^
),然后是空格。 现在,开始捕获组,直到遇到一个不需要的字符:[^\(:]
。 您可以添加更多“不需要的”字符来改变正则表达式,使之与之不同。在第一个捕捉组就是你想要的。在
Demo
您可以尝试此模式在第三次匹配后删除空格:
^[\dA-Z_]+ ([\w ]+)(?=(:| \())
。See demo.相关问题 更多 >
编程相关推荐