[英]Finding and replacing a pattern with bold and normal characters
因此,正如标题所示,我需要做一件疯狂的事情,并且想知道是否有一种更快的方法。 基本上我有Word格式的列表。 每行上都有如下数据:
粗体普通文本
我需要在粗体和普通文本之间插入一些内容。 有什么办法只能找到与该模式匹配的位置(即,这里的B空间为N)? 然后,我可以轻松插入所需的内容。 也许用正则表达式?
好吧,那么有点极端的想法:
您正在讨论的文档是docx吗? 如果没有,我想您可以将其转换为它。
我已经在没有regex的docx文件上尝试过了,但是我敢肯定,您将能够解决这个问题:)
所以!
word
的文件夹。 document.xml
<w:rw:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000"><w:rPr><w:bw:val="1"/><w:rtl w:val="0"/></w:rPr><w:t xml:space="preserve">bold text </w:t></w:r>
<w:bw:val="1"/>
的值为1,表示此字符串(“ bold text”)具有粗体样式。 <w:iw:val="1"/>
(用i
代替b
)。 我的例子:
我想添加图片,但是我没有足够的声誉:(
看起来像:
XMLs示例:
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>
标签)。 (.*?)
,它实际上保存该样式字符串的文本。 (第二组)。 所以,你必须在第一组中的整体风格字符串,只有第二组中的实际文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.