0

我正在尝试删除少于 3 个字符的任何“字符组”。

这是来源:

1.29 取消部分计划 C/5879 2030. in i ir e9g6Pop Iatian Area ProcH 22.4.93 Suburban Lands nf 53dv 3 N014 3.5.98。计划或任何从 01 53 下 M R.5I BL1laY98 E35。P0 RT I 0 NS 在 Maroubrajuncti p /I .z。.0 / .L .I. 。我

重复 1 到 3 之间的单词字符的设置边界,例如 /b\w{1,3}\b/ 不起作用,因为“C/5879”将变为“5879”。

所需的输出如下:

1.29 取消部分计划 C/5879 2030。e9g6Pop Iatian Area ProcH 22.4.93 Suburban Lands 53dv N014 3.5.98。从 R.5I BL1laY98 E35 下进行计划。马鲁布拉君蒂

另一种可行的方法是通过将“字符组”与 2 个或更少由空格分隔的字符连接起来来创建更大的“字符组”。

例如:

1.29 取消部分计划 C/5879 2030. inii.r e9g6Pop Iatian Area ProcH 22.4.93 Suburban Lands nf 53dv 3N014 3.5.98。在 MR.5I BL1laY98 E35 下从 0153 计划或任何计划。P0RTI0NS AtMaroubrajuncti p/Iz .0/.LI.I

我愿意接受任何一种解决方案来将我从正则表达式地狱中解救出来。

4

1 回答 1

0

您对“单词”的定义是“空格分隔”,这与正则表达式对“单词到非单词”的定义不同,因此请使用环顾四周:

\s+\S{1,3}(?=\s)

请注意,表达式包括(捕获)前导空格,因此删除匹配项不会在结果中留下双空格。

在 regextester 上进行测试时,结果是:

1.29 取消部分计划 C/5879 2030。e9g6Pop Iatian Area ProcH 22.4.93 Suburban Lands 53dv N014 3.5.98。从 R.5I BL1laY98 E35 下进行计划。Maroubrajuncti .I

于 2013-11-06T02:13:27.733 回答