gpt4 book ai didi

regex - 仅搜索字符串中的特定单词,不包括介于两者之间的任何内容

转载 作者:行者123 更新时间:2023-11-29 13:39:09 26 4
gpt4 key购买 nike

我正在寻找一种模式,它可以只提取模式中给出的搜索词并排除其间的任何其他词。

所以对于输入字符串...

2637:1888 log :[INFO] :    create    /* some comment*/    table mytab (n numeric)

...我需要提取“创建”和“表格”。

如果在 create 和 table word 之间有任何其他内容,我应该得到 null。我尝试了各种组合,但我无法获得太多线索

如果在 create 和 table word 之间没有注释,那么我的模式有效即

(create)\s*(table)

我该怎么办?

最佳答案

你可以使用

where col ~ '\ycreate(?:\s*/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)*\s*table\y'    

参见 regex demo (出于演示目的,\y 替换为 PCRE \b)。

模式匹配:

  • \y - 单词边界
  • create - 字符串 create
  • (?:\s*/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)* - 零或多次出现
  • \s* - 0+ 个空格
  • table - 字符串 table
  • \y - 单词边界

参见 online demo :

CREATE TABLE tabl1
(test character varying)
;

INSERT INTO tabl1
(test)
VALUES
('1: 2637:1888 log :[INFO] : create table mytab (n numeric)'),
('2: 2637:1888 log :[INFO] : create /* some comment*/ table mytab (n numeric)'),
('3: 2637:1888 log :[INFO] : create /* some comment*/ /**//* some comment2*/ table mytab (n numeric)'),
('4: 2637:1888 log :[INFO] : create WOW table mytab (n numeric)')
;

select * from tabl1 where test ~ '\ycreate(?:\s*/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)*\s*table\y';

输出:

enter image description here

关于regex - 仅搜索字符串中的特定单词,不包括介于两者之间的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58027376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com