2023年 07月 27日 - 正则中的且与非

    正则中的且与非

    a且b

    匹配行的开始: ^

    正向先行断言: ?=

    表示匹配行的结束: $

    模式修饰符(表示单行模式DOTALL模式,它将使点号.匹配包括换行符在内的所有字符): (?s)

    校验一段文本中同时存在ab(java不包括换行): ^(?=.*a)(?=.*b).*$

    校验一段文本中同时存在ab(java包括换行): ^(?s)(?=.*a)(?=.*b).*$

    import java.util.regex.*;
    
    public class Main {
        public static void main(String[] args) {
            String text = "This is a sample\nstring with\na and b";
            //  Pattern.DOTALL 标志来指示正则表达式引擎将点号 . 匹配所有字符,包括换行符
            Pattern pattern = Pattern.compile("^(?=.*a)(?=.*b).*$", Pattern.DOTALL);
            // 如果不通过Pattern.DOTALL,则正则为: ^(?s)(?=.*a)(?=.*b).*$
            Matcher matcher = pattern.matcher(text);
            
            if (matcher.find()) {
                System.out.println("文本中同时存在 'a' 和 'b'");
            } else {
                System.out.println("文本中不存在 'a' 和 'b'");
            }
        }
    }
    
    

    非a且非b

    负向前瞻断言: (?!pattern)

    在正则表达式中表示不匹配某个模式,其中pattern是你想要取反匹配的部分

    既不包含a也不包含b-非(a|b)

    ?!a|b

    2023年 05月 20日 - PostgreSQL迁库后序列号冲突

    PostgreSQL迁库后序列号冲突

    通过如下SQL查询序列号,复制出需要drop的行执行删除

    SELECT 'DROP SEQUENCE "'||n.nspname||'"."'||c.relname||'";' FROM pg_class c 
    left join pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relkind ='S'
    ORDER BY c.relname
    

    2023年 03月 03日 - PostgreSQL中varchar长度

    最大长度为10485760

    	SELECT 'x'::varchar(10485761);
    

    2023年 02月 02日 - PostgreSQL查询表名与索引判断是否存在执行修改

    根据条件判断是否需要执行

    	DO
    	$do$
    	begin
    	if not exists
    	(SELECT indexname from PG_INDEXES where "schemaname"='public' and "table_name"='my_table' and indexname='my_index') then
    	create index my_index on public.my_table("my_column");
    	end if;
    	END;
    	$do$
    	;
    	-- $do$可以换成一个单引号,内容部分的单引号改成2个单引号进行转义
    	
    	-- 查询表或字段
    	select * from information_schema.columns where table_schema='public' and table_name ='my_table' and column_name='my_column'
    

    2023年 01月 13日 - Linux下大文件解压

    Linux下大文件解压

    uzip不支持超过4G的文件解压,需要安装7za,7za解压需要处理编码,否则乱码

    yum install -y p7zip
    # 解压命令,-r递归文件夹,-o指定解压目录,无空格
    
    7za x xxx.zip -r -o/tmp/
    
    # 解决乱码
    yum install convmv
    
    # LANG=C表示以US-ASCII这样的编码输出文件名
    LANG=C 7za x xxx.zip
    # 将解压后的文件进行递归转码
    convmv -f GBK -t utf8 --notest -r ./xxx