1

我正在 Editpad Pro 中处理 375 万行的作者姓名和标题文本目录。我需要将作者的姓名首字母标准化,以便在他们之后加上句号。

目录的作者姓名和书名用竖线“|”隔开 性格,像这样:

A N Author|A Title
A. N. Name|A Blah
Some A Name|Blah A Lot
A Name|Blah I
Name A|I Blah
B O'Name|A Book

通常在 Calibre 中,我使用这个正则表达式来标准化首字母

\b([A-Z])\.?\s?(?!'|\-|\.)\b
Replace:"\1. "

但在这里我需要它只工作到竖线“|” 字符,并且不对标题进行任何更改。如果不更改标题,我似乎无法对所有上述作者姓名进行任何处理。

我正在寻找的结果:

A. N. Author|A Title
A. N. Name|A Blah
Some A. Name|Blah A Lot
A. Name|Blah I
Name A.|I Blah
B. O'Name|A Book 

谢谢。

4

1 回答 1

1

在您的正则表达式中添加一个积极的前瞻

(?=.*\|)

这意味着:在该行后面的某个地方必须有一个|.

只要一行中有一个,它就可以工作 |但是您的源文本示例满足此条件。匹配之前的单个字母,不匹配之后的单个字母。

于 2018-01-09T19:46:02.840 回答