我试图开发可在运行的正则表达式印记 ,该电子版2编辑器。
小盘股是当前的ePub读者生态系统中一个众所周知的问题。 许多读者,如Adobe Digital Editions的,不支持“字体变体:小型股”。 尝试几种不同的解决方法后,我已经定居在通过转换文本创建虚假小型大写字母大写,并设置先前小写字母“FONT-SIZE:0.75em”。
这个过程是极其乏味,尤其是与有大量尾注与其他书籍引用图书工作。
说我有一堆词组在标有“SC”类的HTML页面。 我创建了一个测试短语:
<span class="SC">Hello World! Testing: one tWo thrEE & W.T.F.</span>
<span class="foo">Don't touch me!</span>
我们的目标是编写了“SC”跨度只有标签内匹配任何小写字母一个正则表达式,并与替换它们:
<span class="FSC">LETTERS</span>
我可以管理相匹配,并在第一个字“喂”替换字母,但一切后,打破了。
下面是我到目前为止有:
找:
(<span class="SC">.*?)([a-z]+)(.*</span>)
更换:
\1<span class="FSC">\U\2\E</span>\3
那么棘手的部分是继续寻找该标签中的小写字母的休息,现在,一个新的“FSC”(假小型股)span标签已经出台。 尝试相同的正则表达式再次导致“跨度”,然后在“类”获得FSC处理。 理想情况下,我想能够只是不停的按“全部替换”按钮,直到没有更多的找到匹配。
上面的例子应该是这样完成后:
<span class="SC">H<span class="FSC">ELLO</span> W<span class="FSC">ORLD</span>! T<span class="FSC">ESTING</span>: <span class="FSC">ONE</span> <span class="FSC">T</span>W<span class="FSC">O</span> <span class="FSC">THR</span>EE & W.T.F.</span>
<span class="foo">Don't touch me!</span>
这不是很漂亮,但它的工作原理上,我已经测试了每一个读者的ePub。
如果谷歌“EPUB小盘股正则表达式”,你会遇到,我编辑,以包括此正则表达式,我已经决定一个MobileRead wiki文章并不尽如人意:
(<span class="[a-zA-Z0-9\- ]*?(?<!F)SC[a-zA-Z0-9\-]*?">(?:.+?<span class="FSC">.+?</span>)*[\.|,|:|;|-|–|—|!|\?]? ?(?:&)? ?[A-Z]+)([a-z'’\. ]+)(.*?</span>)
这结束了小型化一串标点符号,有时在一个短语的中间站。 我开始了,心想有可能是一个更好的解决方案,不尝试计划为每一个可能性了前面。
如果有人想出了一个更好的解决这个,你会整本EPub出版业的英雄。
更新
我已经添加了公认的(唯一的)答案移动阅读维基 。 请注意,这正则表达式已经在使用印记专门涂改的; YMMV在其他环境中。