我为这个语无伦次的标题道歉,但在这种情况下很难想出一个。
我有一堆文本,(几乎)总是以这样的方式开始:
Word (Foo) - Main Text
或者这个:
Word (Foo/Bar) - Main Text
我想删除Main Text
之前的所有内容,但似乎/
字符搞乱了我的正则表达式。
到目前为止,我有这个:re.search('^[^)]*/*\)(.*)$', my_text)
我已在regex101网站上对其进行了测试,它应该适用于两个实例(无论是否有/
)但是,当我将其插入我的Python代码时,它会返回{{ 1}}遇到NoneType
时。我错过了什么?
答案 0 :(得分:2)
执行:
^[^-]*-\s*(.*)
现在只有被捕获的小组才是你想要的部分。
^[^-]*
首先将子字符串匹配到-
-
匹配文字-
,\s*
匹配零个或多个空格
唯一捕获的组(.*)
匹配字符串的其余部分
示例:强>
In [10]: s = 'Word (Foo/Bar) - Main Text'
In [11]: re.search(r'^[^-]*-\s*(.*)', s).group(1)
Out[11]: 'Main Text'