因此,标题表明我有一个疯狂的事情,我需要做,并想知道是否有更快的方法来做到这一点。基本上我有Word格式的列表。在每一行上都有如下数据:
粗体文字普通文字
我需要在粗体和普通文本之间插入一些内容。有没有办法找到匹配该模式的地方(即 B 空间在这里N)?然后我可以轻松插入我需要的东西。也许是正则表达式的东西?
答案 0 :(得分:1)
好的,有点极端的想法:
您正在谈论的文件是docx?如果没有,我想你可以把它转换成它。
我已经在没有正则表达式的docx文件上尝试过了,但我确信您能够处理这个问题:)
原来如此!
word
的文件夹。document.xml
<w:r w:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000"><w:rPr><w:b w:val="1"/><w:rtl w:val="0"/></w:rPr><w:t xml:space="preserve">bold text </w:t></w:r>
<w:b w:val="1"/>
表示此字符串(&#34;粗体文字&#34;)具有粗体样式。<w:i w:val="1"/>
(使用i
代替b
)。我的例子:
我想添加图片,但我没有足够的声誉:(
它看起来像:
XML示例:
https://gist.github.com/arieljannai/08756ef562962eee0798
所以,你现在唯一需要做的就是构建一个正则表达式,它会找到包含w:b
标签和所有周围环境的部分,而不是你拥有它:)
编辑:我制作的一个正则表达式示例,它与样式字符串行匹配,就像我在上面的示例中所做的那样:
(<w:r.*?>(?:<w:b\s{1}.*?\/>){1}.*?(?:<w:t\s{1}.*?>(.*?)<\/w:t>)<\/w:r>)
<w:r>
标记(第一组)之间的部分。(?:<w:b\s{1}.*?\/>)
)<w:t>
标记)。(.*?)
实际上保存了该样式字符串的文本。 (第二组)。所以你在第一组中有整个样式字符串,只有第二组中的实际文本。