繁体   English   中英

查找并替换为粗体和普通字符的图案

[英]Finding and replacing a pattern with bold and normal characters

因此,正如标题所示,我需要做一件疯狂的事情,并且想知道是否有一种更快的方法。 基本上我有Word格式的列表。 每行上都有如下数据:

粗体普通文本

我需要在粗体和普通文本之间插入一些内容。 有什么办法只能找到与该模式匹配的位置(即,这里的B空间为N)? 然后,我可以轻松插入所需的内容。 也许用正则表达式?

好吧,那么有点极端的想法:

您正在讨论的文档是docx吗? 如果没有,我想您可以将其转换为它。

我已经在没有regex的docx文件上尝试过了,但是我敢肯定,您将能够解决这个问题:)

所以!

  • 将docx文件提取为zip存档
    • 您可以将.zip作为扩展名添加到文件名中,也可以仅使用诸如7zip之类的存档器打开。
  • 导航到提取的文件夹下名为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM