Perl兼容的正则表达式,用于选择除第二个单词

时间:2015-10-01 02:11:22

标签: regex perl drupal pcre

我试图使用PCRE来选择除了文本行中第一个数字串之外的所有内容。数字字符串可以是3,4或5位长,但始终是文章之后的第二个字。以下是一些例子:

  

第11367条航空公司专家仁川机场转移运营专业印度尼西亚

     第8364条未来投资韩国政府投资4万亿韩元科技ict rd

     第2151条战斗机采购洛克希德马丁能够提出更低的价格f 35s

我目前正在使用表达式\b(?=\w*[a-zA-Z])\w+\b。这会选择除数字之外的所有内容这几乎是完美的,但正如您在上面的第2行和第3行中所看到的,有时数字出现在第一组之后。我想选择除第二个之外的每个单词,或忽略第一组数字但包含其他数字,以便最终匹配的结果如下所示:

  

文章航空公司专家仁川机场转移运营专业印度尼西亚

     文章未来投资韩国政府投资4万亿韩元科技ict rd

     文章战斗机采购洛克希德马丁能够提出降低价格f 35s

我这样做是因为Drupal模块search404在其配置中包含一个PCRE字符串,用于从搜索字符串中选择要消除的所有内容。它还包括一个使用搜索词自动执行自定义搜索URL的功能,并允许您构建URL。我想构建URL,使其看起来像/ node / number,这将自动将用户从旧文章URL(上面的一行)发送到新文章URL。

1 个答案:

答案 0 :(得分:1)

更新

如果您确定数字位于第二位,请使用\K

^\S+\s+|\G(?!^)\d+\K|\G(?!^).*$

替换为empty string。请参阅演示。

https://regex101.com/r/fX3mH8/3


原帖

如果您确定数字位于第二位,请使用\K

^\S+\s+\K\d+

替换为empty string。请参阅演示。

https://regex101.com/r/fX3mH8/1