【发布时间】:2020-12-11 12:03:34
【问题描述】:
我想从字符串中提取子串,比如
案例一:
text = "some_txt" # → some_txt
案例2:
text = "[info1]some_txt" # → some_txt
案例3:
text = "[info1][info2] some_text" # → some_txt
案例4:
text = "[info1][info2] some_text_with_[___]_abc" # → some_text_with_[___]_abc
我做的是
match = re.search("^\[.+\] (.*)", text)
if match:
result = match.group(1)
除了第 4 种情况,它工作正常,它只给出abc。我想改用some_text_with_[___]_abc。
任何帮助将不胜感激。
【问题讨论】:
-
看起来你想要
r"^(?:\[[^][]+])+\s*(.*)",对吧?或者,只是re.sub(r'^(?:\[[^][]+])+\s*', '', text)。请注意,使用内置函数作为变量名并不是一个好主意。请说明您的要求是什么,因为“我坚持使用 python 正则表达式”不是很有帮助。 -
是的。有用。非常感谢您的帮助。但这对我来说很难理解。是否可以解释这种正则表达式模式?
-
请确认我的编辑没问题。
-
您的编辑非常好。非常感谢。我应该自己做的。 :D
-
请注意,量化具有单一强制性模式和所有其他可选模式的组并不是一个好主意,这会导致性能问题和灾难性的回溯。