Regex Perl兼容的正则表达式,用于选择除第二个单词以外的所有内容
我尝试使用PCRE来选择文本行中除第一个数字字符串以外的所有内容。数字字符串可以是3、4或5位数,但始终是冠词后的第二个单词。以下是一些例子: 第11367条航空公司专家仁川机场向印度尼西亚转让运营专业知识 第8364条未来投资韩国政府投资4万亿韩元科技ict研发 第2151条战斗机采购洛克希德·马丁公司可提议降低f 35的价格 我目前正在使用表达式Regex Perl兼容的正则表达式,用于选择除第二个单词以外的所有内容,regex,perl,drupal,pcre,Regex,Perl,Drupal,Pcre,我尝试使用PCRE来选择文本行中除第一个数字字符串以外的所有内容。数字字符串可以是3、4或5位数,但始终是冠词后的第二个单词。以下是一些例子: 第11367条航空公司专家仁川机场向印度尼西亚转让运营专业知识 第8364条未来投资韩国政府投资4万亿韩元科技ict研发 第2151条战斗机采购洛克希德·马丁公司可提议降低f 35的价格 我目前正在使用表达式\b(?=\w*[a-zA-Z])\w+\b。这将选择除数字以外的所有内容。这几乎是完美的,但正如您在上面的第2行和第3行中所看到的,有时数字出现在
\b(?=\w*[a-zA-Z])\w+\b
。这将选择除数字以外的所有内容。这几乎是完美的,但正如您在上面的第2行和第3行中所看到的,有时数字出现在第一组之后。我希望选择除第二个之外的每个单词,或者忽略第一组数字,但包括其他数字,以便最终匹配结果如下所示:
第条航空公司专家仁川机场向印度尼西亚转让运营专业知识
文章未来投资韩国政府投资4万亿韩元科技ict研发
第三条洛克希德·马丁公司能够提出更低的f 35战斗机采购价格
我这样做是因为Drupal模块search404在其配置中包含一个PCRE字符串,该字符串选择要从搜索字符串中删除的所有内容。它还包括一个自动使用搜索词执行自定义搜索URL的功能,并允许您构造URL。我想构造URL,使其看起来像/node/number,它会自动将用户从旧文章URL(上面的一行)发送到新文章URL。Update
如果确定数字位于第二位,请使用\K
^\S+\s+|\G(?!^)\d+\K|\G(?!^).*$
^\S+\s+\K\d+
替换为空字符串
。请参阅演示
原职 如果确定数字位于第二位,请使用
\K
^\S+\s+|\G(?!^)\d+\K|\G(?!^).*$
^\S+\s+\K\d+
替换为空字符串
。请参阅演示
这些字符串首先是如何进入URL的?它们是否真的包含空格(编码为
%20
)?URL在到达正则表达式之前被处理,到那时,空格没有编码,它们只是空格。这将只删除数字,这是OP想要保留的唯一部分。我正试图实现与此完全相反的目标。不要选择数字,选择其他所有内容。如果成功,+1。工作答案决不能被否决,被接受的答案决不能被设计否决。@Stribizev:否决票是我的,这是因为这个解决方案的原始形式根本不是一个解决方案。看我的comment@vks:请记住,堆栈溢出不是论坛。如果你想在发布垃圾答案后再尝试一次,我一点也不确定这里的最佳实践应该是什么。我的第一个猜测是,如果你的新解决方案有很大不同,你应该写一篇新文章。你是否应该删除原件取决于它是否对任何人有用