我有一些格式不规范的文本需要过滤。因此,文本中有许多情况下引用在一个行中开始,然后被截断并在第二行结束。在这种情况下,我的偏好是完全删除部分引用,但是我想保留常规的完整引用。我知道可以通过计数器迭代地完成这个任务,但我真的更喜欢使用正则表达式解决问题。
以以下为例:
"This is a quote" This is an end "partial- quote" Here is more text. This is an end "partial- quote w/o more text" This is an "embedded" quote 这是我的当前尝试示例。请查看此处:
1. 第三行-部分引用在句子的剩余部分之前(非常罕见的情况,所以如果我们不能解决,这并不是世界末日)。 2. 第六行-嵌入式引用。这是一个重大问题,也是我提出问题的主要原因。它抓住了嵌入式引用中的最后一个引用到该行的结尾。
我想过设置一个 if 语句,并逐行运行每个行,检查其是否少于两个引用,然后继续解析部分引用,但是我认为 SO 的专家们会有一个更简洁的解决方案。
注意:期望输出如下:
"This is a quote" This is an end Here is more text. This is an end This is an "embedded" quote (我稍后会处理空格)
以以下为例:
"This is a quote" This is an end "partial- quote" Here is more text. This is an end "partial- quote w/o more text" This is an "embedded" quote 这是我的当前尝试示例。请查看此处:
(\"[^\"\n]+?|^[^\"\n]+?\")(\n|$)
请注意它会在两种情况下失败:1. 第三行-部分引用在句子的剩余部分之前(非常罕见的情况,所以如果我们不能解决,这并不是世界末日)。 2. 第六行-嵌入式引用。这是一个重大问题,也是我提出问题的主要原因。它抓住了嵌入式引用中的最后一个引用到该行的结尾。
我想过设置一个 if 语句,并逐行运行每个行,检查其是否少于两个引用,然后继续解析部分引用,但是我认为 SO 的专家们会有一个更简洁的解决方案。
注意:期望输出如下:
"This is a quote" This is an end Here is more text. This is an end This is an "embedded" quote (我稍后会处理空格)