正则表达式从文本中删除所有引号部分?

Regex to remove all quote-parts from a text?

我有一个电影剧本,我需要删除所有引号,也就是人们在说某事的部分,f.e。: "Martin:"。 有人知道我应该使用哪个正则表达式吗?

我正在使用脚本语言 Perl。 所以我的输入是整个电影剧本。 我想要的输出是那个电影剧本,但没有人们谈话的部分。 所以 "Martin: I'm hungry." 应该变成 "I'm hungry."

我在查找栏中尝试了“\w+\b:”,但它选择了所有带有 : 的实例。我尝试使用 ^ 来标记行的开头,但它给出了一个错误。

但是名字并不总是单一的名字。例如,他们也可以是 Scout Leader 或 Kid #1。

你可以试试这个

^"[\w\s\d#]+:\s*

Explanation

^ - 匹配字符串的开头。

"[a-zA-Z][\w\s\d#]+: - 匹配 " 后跟一个或多个字母或 space 或数字或 # 后跟 :.

-\s* - 匹配零个或多个 space 个字符。

Demo

如果名称从不包含 :,您可以简单地将其从搜索中排除(基于@code-maniac 的回答):

^"[^:]+:\s*

Demo

[^:] 匹配任何非 : 的字符。您可以在 [].

之间包含您不想匹配的任何字符