需要正则表达式搜索和替换模式

时间:2013-05-26 07:40:20

标签: regex

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

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

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

并将其转换为:

<lower_case_character><space_character><lower_case_character>

有人能为我提供正确的搜索并替换正则表达式吗?

感谢。

3 个答案:

答案 0 :(得分:0)

我想你要删除Caliber添加的不必要的类属性.. 我不知道是不是想制作一个将pdf转换为epub的脚本,或者你想分别编辑ePub。 要编辑ePub并删除无用的类,您可以轻松解压缩ePub文件。 您可以使用WinRar将epub的内容解压缩到一个文件夹,编辑生成的HTML文件。然后再次重新拉链以使其成为ePub。

答案 1 :(得分:0)

只要您使用的编辑器具有外观功能,请尝试使用&#34;搜索&#34;:

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

在&#34;替换&#34;简单地放一个空格。

在上面的代码中,这个(?<=[a-z])是一个积极的外观&#34;查找,但不替换要替换的文本块之前的小写字母。

同样,这个(?=[a-z])是一个积极的前瞻&#34;查找,但不替换要替换的文本块后的小写字母。

&#34;口径&#34; calibre\d应该捕获其他类,例如calibre1或calibre3等。

您可以在此处试用:http://gskinner.com/RegExr/

以下内容更加强大,并且会查找标签两侧可能有额外空格的Calibre标签:

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

答案 2 :(得分: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>