繁体   English   中英

在 MS Word 正则表达式中捕获组

[英]Capture groups in MS Word regex

我正在尝试删除“n =”之前的新行,替换为空格并在()中包含捕获的数字,所有这些都在MS Word的高级查找+替换中,使用通配符。

目前:

some preceeding text
n=1,233,023

期望的结果:

some preceding text (1,233,023)

我一直在努力使用 ^13n=(*{1,}) 并替换为 " (\1)" (不带引号),但它甚至无法匹配。 请提供任何帮助,不胜感激。 谢谢

MS Word 在正则表达式中确实有奇怪的方式。 以下步骤对我来说是成功的(我的是荷兰语,所以请原谅任何小的翻译错误):

  • 按 Ctrl + H打开Search And Replace
  • 勾选更多并勾选使用通配符

现在完成此操作后,我们可以搜索:

^13(n=[0-9,]{1,})
  • ^13 - 匹配换行符。
  • ( - 打开捕获组 1。
    • n= - 从字面上匹配“n=”。
    • [,0-9]{1,} - 匹配一个数字或逗号至少 1 次。
  • ) - 关闭捕获组 1。

替换为:

^s\1
  • ^s\1 - 一个空格,后跟捕获组 1。

如前所述,我会考虑 Word 提供的正则表达式的类型是狡猾的。 在这里,您也可以阅读更多关于它的缺陷的信息。 我无法在捕获组中创建捕获组,也无法创建三个连续数字和逗号的可选块。 幸运的是,在您自己的尝试中,只知道一个换行符后跟n=似乎就足够了。

倒数第二个音符; 因为我是荷兰人,所以我的本地参数分隔符是分号。 这也体现在本次搜索和替换 function 中,它的出现指示符含义我使用: ^13(n=[,0-9]{1;})

最后一点,我发现对我有用的另一种模式是^13(n=*^13) ,但由于我们对n=和段落结尾之间的模式的控制为零,我会坚持我最初的想法。 之所以在这里使用*是因为我们将它用作n=^13之间任何字符的实际频率。


前:

在此处输入图像描述

后:

在此处输入图像描述

通配符搜索词应该是

(^13)([a-z])(=)([,0-9]{1,})

替换是

(\4)  

注意上面的第一个字符是空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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