MS Word:替换通过正则表达式找到的 space *before* 字符串

MS Word: replacing space *before* string found via regex

好人,长期听众,第一次来这里。

我在问题的“搜索”方面找到了充足的帮助,但我被困在替换上。示例:

hello 9

world 18

howdy 37

通过使用“([0-9])([0-9])” - 使用 space 和所需数量的 ([0-9]) - 我可以轻松找到一个数字前面有 space.

我想用分号替换 space 以获得:

hello;9

world;18

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

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

万分感谢

在 Notepad++ 中使用替换选项试试这个:

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

我基本上只是在寻找前面有字母,后面有数字的空格。

在 Word 中,使用通配符将不同部分放在 "expressions" - 括号中。因此,为了找到具有任意位数的 [space] 数字:

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

然后用分号加上第二个表达式代替:

;

反斜杠表示表达式,后跟表达式的索引号。您可以包含多个表达式顺便说一句。

注意字符数的定义——{1;}——包含一个定界符(列表分隔符)。根据 Windows 系统配置,这可能不是 semi-colon。它可以是逗号或其他字符。在 Windows 控制面板(适用于 Win 7)中:区域和 Language/Formats/Additional Settings/List 分隔符。以编程方式,这可以从注册表中读取。

我将在 Cindy Meister 的回答中添加我对世界外卡的经验。

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

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

无需捕获要删除的组(space 在您的情况下)。

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