🧑‍🏫
liualexiang
  • Introduction
  • Azure
    • AKS Basic
    • AKS Spark
    • AZ ACR SYNC
    • Azure CMI SDWAN
    • Azure LB DeepDive
      • Azure LB DeepDive
    • Azure Service Principal Basic
    • Azure Internal VM Network Connectivity
      • Azure Internal VM Network Connectivity
    • Azure Cli Build
    • Azure Vm Memory Monitor
  • Blockchain
    • BTC
  • CRISPR
    • 使用Parallel_Cluster提升CRISPA效率
  • OpenSource
    • ElasticSearch
      • ES Get Started
      • ES Search Query
      • Kibana 可视化
      • Logstash配置
    • Ansible 基础
    • Infra As Code
      • Pulumi Get Started
      • Terraform Basic
    • ZooKeeper 基础
    • RPC与REST
    • 使用Python申请大量内存测试
    • 使用TPC_DS产生压测数据
    • Superset
      • Superset部署手册
    • 代码扫描
    • Git
      • Git Basic
      • Github Action Basic
      • Gitlab与AzureAD集成
      • Gitbook 基础教程
    • K8S
      • enter_node
      • K8s X509 Client Cert
      • K8s Basic
      • K8s Oidc
      • Docker 基础
      • helm基础
      • K8S_Secrets管理
      • 深入了解K8S
      • 混沌工程
      • Istio
      • 生态
      • CRD开发
      • k8s网络
    • Cloud_Custodian
    • Jenkins Basic
    • Nginx
    • ETCD
    • 正则
    • VictoriaMetrics
    • Kafka
  • MySQL
    • MySQL 调优
  • Linux
    • SSH Tunnel 上网
    • 内存管理
    • 在Linux系统中通过LUKS加密磁盘
    • 量子计算 Basic
    • IO多路复用
    • Iptables
    • tmux和screen
    • Systemd
    • OS 基础
    • jq基础
    • yum
    • neovim
  • Web
    • Html Css
    • Web部署
    • 缓存
  • Programming
    • 算法
      • 返回list中最大生序子序列长度
    • Python技巧
      • Python的语法糖
      • Python常用装饰器
      • AsyncIO基础
      • 自动化测试pytest
      • python中的下划线
      • 面向对象
      • Python的坑
      • Python配置文件管理
      • HTTP Stream Response
      • Python项目管理
    • 设计模式
      • 设计模式
      • 面向对象的思想
      • 编程概念
    • Go
      • Go 基础
      • Go常用功能
      • 结构体入门
    • 前端
    • Vue
    • NodeJS
  • Math
    • 多项式插值法
  • Security
    • HTTP常见攻击
    • 加密与签名
    • RSA
    • ECDSA
  • Solidity
    • Solidity基础
    • Blockchain Testnet Faucet
  • Tools
    • 视频处理ffmpeg
    • IDE配置
    • iTerm2美化
    • 密码管理
    • FRP配置
    • 工具集
由 GitBook 提供支持
在本页
  • 单词边界匹配
  • 正向前查找 lookbehind 和正向后查找 lookahead
  1. OpenSource

正则

单词边界匹配

如果想要匹配非某几个单词以外的其他单词, 比如有单词: xx one two three yy aax sdf等等,想匹配除了 one two three以外的所有单词

\b(?!one\b|two\b|three\b)\w+\b

解释:

  • \b 表示单词的边界,确保我们匹配的是整个单词而不是部分单词

  • (?!one\b|two\b|three\b) 这是一个否定前瞻断言(negative lookahead assertion),表示我们不希望匹配 one 或者 two或者 three后面紧跟着单词边界的地方。其中 (?!) 表示否定前瞻断言的开始,one\b 表示匹配 one后面紧跟着单词边界。| 表示逻辑或,two\b表示two这个残次边界的位置

  • \w+ 表示匹配一个或多个字母数字字符(单词字符)

  • \b 表示再次匹配单词边界,以确保我们匹配完整的单词

正向前查找 lookbehind 和正向后查找 lookahead

使用 ?<= 可以查找从 = 后面的那个字符(不包含那个字符),开始进行匹配。比如下面的示例:是从 ( 后面的字符开始匹配。?= 是一个正后向查找lookahead,它表示查找=后面的字符作为终止查找,但不包含这个字符。下面的示例是查找 ()包含的所有字符,但不包含这个()括号。

一个数据比如是这样

abc="wpkh([2817ce8f/84h/1h/0h]tpubDDa8NBj9P8Yid5VjPdvmxQPzXzd9R42bnHCKdMWJzqKd7E1ds6qdphGoYhyUvLJJGNHZQ8r2gmydpA2yJnq9Xi3Yab5t2rG35xYKSBWtDtA/1/*)#n7krh3fv"

使用正则

echo $abc | grep -Po '(?<=\().*(?=\))'

得到的结果是

[2817ce8f/84h/1h/0h]tpubDDa8NBj9P8Yid5VjPdvmxQPzXzd9R42bnHCKdMWJzqKd7E1ds6qdphGoYhyUvLJJGNHZQ8r2gmydpA2yJnq9Xi3Yab5t2rG35xYKSBWtDtA/1/*
上一页ETCD下一页VictoriaMetrics

最后更新于7个月前