-3

我使用 calibre 将 pdf 转换为 epub 文件。当我查看 epub 时,我在智能手机上查看时会看到不必要的换行符。

我想使用正则表达式来识别这些情况:

<lower_case_character><space_character></p><p class="calibre2"><lower_case_character>

并将其转换为:

<lower_case_character><space_character><lower_case_character>

有人可以为我提供正确的搜索和替换正则表达式吗?

谢谢。

4

3 回答 3

0

只要您使用的编辑器具有环视功能,请尝试以下“搜索”:

(?<=[a-z])\b</p><p class="calibre\d">(?=[a-z])

在“替换”中简单地放一个空格。

在上面的代码中,这(?<=[a-z])是一个“正向查找”,它查找但不替换要替换的文本块前面的小写字母。

同样,这(?=[a-z])是一个“正向前瞻”,它在您要替换的文本块之后查找但不替换小写字母。

"calibre" 后面的 \dcalibre\d应该捕获其他类,例如 calibre1 或 calibre3 等。

你可以在这里试试:http: //gskinner.com/RegExr/

以下内容更加健壮,将查找标签两侧可能有额外空白的 Calibre 标签:

(?<=[a-z])(\b|\s)(</p><p class="calibre\d">)(\b|\s)(?=[a-z])
于 2013-06-03T13:25:23.873 回答
0

我认为您想删除 Calibre 添加的不必要的类属性。我不知道是否正在尝试制作将 pdf 转换为 epub 的脚本,或者您想单独编辑 ePub。要编辑 ePub 并删除无用的类,您可以轻松地提取 ePub 文件。您可以使用 WinRar,将 epub 的内容提取到一个文件夹,编辑生成的 HTML 文件。然后重新压缩它以使其成为 ePub。

于 2013-05-26T07:50:25.563 回答
0

尝试这个:

(?x) (?<! \. (co|d ) )
(?<C>\b\p{L}+) [-] \s* 
</p> \s*   (<(?<XX>div|p)[^<>]*>\s* </\g<XX>>\s* )* <p[^<>]*>
(?<D>[\p{L}]+\b )
|
(?x) (?<! \. (co|d ) )
(?<A>[\p{N}\p{L}–,—] )\s* (?<B>(</(\w+)>)*)?
</p> \s*   (<(?<XX>div|p)[^<>]*>\s* </\g<XX>>\s* )* <p[^<>]*>
(?<C>(<(\w+)\b[^<>]*>)*)?
 \s*(?<D>[\p{L}] )
|
(?x)(?-i)  (?<! \. (co|d ) )
(?<A>[\d\p{Ll}\p{N}] | \p{Ll}-)\s* (?<B>(</(\w+)>)*)?
</p> \s* (<(?<XX>div|p)[^<>]*>\s* </\g<XX>>\s* )*<p[^<>]*>
(?<C>(<(\w+)\b[^<>]*>)*)?
 \s*(?<D>[\p{Ll}] )  (?i)
|
(?x)(?-i)  (?<! \. (co|d ) )
(?<A>[’] | \p{L}-)\s* (?<B>(</(\w+)>)*)?
</p> \s*  (<(?<XX>div|p)[^<>]*>\s* </\g<XX>>\s* )*<p[^<>]*>
(?<C>(<(\w+)\b[^<>]*>)*)?
 \s*(?<D>[\p{L}] )  (?i)

|
(?x)(?i)  (?<! \. (co|d ) )
(?<A>\b (ca|Dr|Mr|Ms|Mrs|St) [.․] )\s* (?<B>(</(\w+)>)*)?
</p> \s*  (<(?<XX>div|p)[^<>]*>\s* </\g<XX>>\s* )*<p[^<>]*>
(?<C>(<(\w+)\b[^<>]*>)*)?
 \s*(?<D>[\p{L}] )  (?i)

代替:

\g<A>\g<B> \g<C>\g<D>
于 2020-05-18T22:05:03.587 回答