MS Word:在通过正则表达式找到* string之前替换空格*

时间:2016-01-19 16:27:42

标签: regex ms-word notepad++

善良的人,长时间的倾听者,第一次来电。

我在问题的“搜索”方面找到了足够的帮助,但我仍然坚持更换。例如:

  

你好9

     

世界18

     你好37岁。

通过使用“([0-9])([0-9])” - 根据需要使用空格和多个([0-9]) - 我可以很容易地找到以空格开头的数字。 / p>

我想用分号替换该空格以​​获取:

  

您好; 9

     

世界; 18

等。我无法删除文本中的所有空格并将其替换为“;”。所以问题是:

如何告诉MS Word - 或者记事本++ - 使用找到的字符串删除其空间而不替换找到的数字?

万分感谢

3 个答案:

答案 0 :(得分:0)

在Notepad ++中使用替换选项:

进行尝试
Find what: (?<=[a-zA-Z])\s(?=[0-9]+)
Replace with: ;

我基本上只是寻找前面带字母的空格,以及后面的数字。

答案 1 :(得分:0)

在Word中,使用通配符,将不同的部分放在“表达式” - 括号中。所以为了找到任意位数的[space]数字:

( )([0-9]{1;})

然后用分号加第二个表达式替换它:

;\2

反斜杠表示表达式,后跟表达式的索引号。您可以包含多个表达式BTW。

请注意,字符数的定义 - {1;} - 包含分隔符(列表分隔符)。根据Windows系统配置,这可能不是分号。它可以是逗号或其他角色。在Windows控制面板(适用于Win 7)中:区域和语言/格式/其他设置/列表分隔符。以编程方式,这可以从注册表中读取。

答案 2 :(得分:0)

我将用Cindy Meister的答案添加我对世界外卡的体验。

使用大量数据和长正则表达式时,您应该使用更大,更精确的正则表达式字符串来获得所需的精确替换,同时不捕获不需要的组。

在您的情况下,您应该使用([A-Z]{1,}) ([0-9]{1,2})替换为\1;\2

无论如何都无需捕捉你正在删除的群组(你的情况下的空间)。

这里([0-9] {1,2})应该根据数字的出现来设置。在您的示例中,您显示了1或2次出现。