我试图使用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。
答案 0 :(得分:1)
如果您确定数字位于第二位,请使用\K
。
^\S+\s+|\G(?!^)\d+\K|\G(?!^).*$
替换为empty string
。请参阅演示。
https://regex101.com/r/fX3mH8/3
如果您确定数字位于第二位,请使用\K
。
^\S+\s+\K\d+
替换为empty string
。请参阅演示。