正则表达式怎么控制匹配的字符串更近的一个

news2024/11/15 15:38:17

http((?!http).)*m3u8

正则表达式怎么控制匹配的字符串更近的一个

正则如何匹配最近的字符 正则如何匹配最近的两个字符

怎么控制只要离字符串b匹配更近一点的字符串a

解释

a.b,它将会匹配最长的以a开始,以b结束的字符串 a.?b匹配最短的,以a开始,以b结束的字符串 我想要的是结合体, 匹配最长 但是最后要的是以最后一个a结尾,最后一个b结尾的字符串

正则表达式,它能够匹配最长的以第一个 a 开始,以最后一个 b 结束的字符串。这种需求通常需要使用贪婪匹配来获取最长的匹配,但同时又要确保匹配的是最后一个 a 和最后一个 b 之间的内容。

在正则表达式中,你可以使用一些技巧来达到这个目的,例如使用负向前视断言来排除过多的 ab,只匹配最后一个符合条件的片段。下面是一个示例的正则表达式:

Copy Codea((?!a).)*b

正则表达式解释:

  • a: 匹配字面字符 "a"。

  • ((?!a).)*: 这是一个贪婪匹配的子表达式,它会匹配任意字符,但是排除以 "a" 开头的字符序列。这样可以确保在最后一个 a 之后,匹配的字符不会再包含 a

  • b: 匹配字面字符 "b"。

这个正则表达式的逻辑是:从第一个 a 开始,尽可能多地匹配字符,直到最后一个 b 结束。由于使用了负向前视断言 (?!a),保证了匹配的字符序列中不会再出现 a,从而在文本中定位到最后一个 ab 之间的内容。

示例应用:

例如,对于字符串 "aabcababcb",这个正则表达式将匹配 "abcb",即从第一个 a 到最后一个 b 之间的最长字符序列。

在 C# 中使用这个正则表达式,你可以像之前示例那样,使用 Regex 类进行匹配和提取。

using System;
using System.Text.RegularExpressions;
​
class Program
{
    static void Main()
    {
        string input = "aabcababcb";
        
        string pattern = @"a((?!a).)*b";
​
        Regex regex = new Regex(pattern);
        Match match = regex.Match(input);
​
        if (match.Success)
        {
            string extractedString = match.Value;
            Console.WriteLine("Extracted string: " + extractedString);
        }
        else
        {
            Console.WriteLine("No matching string found.");
        }
    }
}
这段代码将输出匹配到的最长符合条件的字符串 "abcb"。

应用

http.m3u8,它将会匹配最长的以http开始,以m3u8结束的字符串 http.?m3u8匹配最短的,以http开始,以m3u8结束的字符串 我想要的是结合体, 匹配最长 但是最后要的是以最后一个http结尾,最后一个http结尾的字符串

 var url = request.Uri; var tet = "";
      if (url != null && url.EndsWith(".m3u8")||url.EndsWith(".mp4")&& qflagurl==true)
            { 
        tet = "webview2适配m3u8url捕获成功\n";  
        Sharing.setTips(tet);
        Match match = Regex.Match(url, @"http((?!http).)*m3u8", RegexOptions.Singleline);
        if (match.Success)
        {
          url = match.Value;
          //qflag3 = false;
​
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试开发面经总结(三)

TCP三次握手 TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号&…

微信小程序密码 显示隐藏 真机兼容问题

之前使用type来控制&#xff0c;发现不行&#xff0c;修改为password属性即可 <van-fieldright-icon"{{passwordType password? closed-eye:eye-o}}"model:value"{{ password }}"password"{{passwordType password ? true: false}}"borde…

数仓工具—Hive语法之排除特定列

排除特定列 Apache Hive是一个基于Hadoop HDFS的数据仓库框架,用于存储和分析大量数据。Apache Hive支持大多数关系数据库功能,如对大型表进行分区和根据分区列存储值。 在本文中,我们将检查从SELECT查询中排除Hive分区列的方法。 这个在我们需要表中大量列的时候,例如一…

【python】OpenCV—European Article Number

参考学习来自&#xff1a;OpenCV基础&#xff08;25&#xff09;条码和二维码扫的生成与识别 1 条形码介绍 EAN-13是欧洲物品编码&#xff08;European Article Number&#xff09;的缩写&#xff0c;是一种广泛使用的条形码标准&#xff0c;特别是在超级市场和其它零售业中。…

第二周周日学习总结

题目总结 1. 给你一个仅由数字组成的字符串 s&#xff0c;在最多交换一次 相邻 且具有相同 奇偶性 的数字后&#xff0c;返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数&#xff0c;则它们具有相同的奇偶性。例如&#xff0c;5 和 9、2 和 4 奇偶性…

zookeeper基础知识学习

官网&#xff1a;Apache ZooKeeper 下载地址&#xff1a;Index of /dist/zookeeper/zookeeper-3.5.7Index of /dist/zookeeperIndex of /dist/zookeeper/zookeeper-3.5.7 ZK配置参数说明&#xff1a; 1、tickTime2000&#xff1a;通讯心跳时间&#xff0c;zookeeper服务器与客…

Reinforced Causal Explainer for GNN论文笔记

论文&#xff1a;TPAMI 2023 图神经网络的强化因果解释器 论文代码地址&#xff1a;代码 目录 Abstract Introduction PRELIMINARIES Causal Attribution of a Holistic Subgraph​ individual causal effect (ICE)​ *Causal Screening of an Edge Sequence Reinforc…

Three.js 对创建的物体进行位置旋转缩放修改。

1.在场景里面添加一个物体作为示例 // 创建一个物体&#xff08;形状&#xff09;const geometry new THREE.BoxGeometry(5, 5, 5);//创建材质&#xff08;外观&#xff09;const material2 new THREE.MeshLambertMaterial({color: 0xfff, //设置材质颜色side: THREE.DoubleS…

SpringBoot + vue 管理系统

SpringBoot vue 管理系统 文章目录 SpringBoot vue 管理系统1、成品效果展示2、项目准备3、项目开发3.1、部门管理3.1.1、前端核心代码3.1.2、后端代码实现 3.2、员工管理3.2.1、前端核心代码3.2.2、后端代码实现 3.3、班级管理3.3.1、前端核心代码3.3.2、后端代码实现 3.4、…

Matlab 计算一个平面与一条直线的交点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,将直线 L L L与由其齐次坐标 V = (

STM32的定时器HAL库

目录 一&#xff0c;定时器的介绍 一&#xff0c;定时器的介绍 1. STM32F103C8T6微控制器内部集成了多种类型的定时器&#xff0c;这些定时器在嵌入式系统中扮演着重要角色&#xff0c;用于计时、延时、事件触发以及PWM波形生成、脉冲捕获等应用。 1.1 高级定时器&…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(六)-人工智能控制的自主无人机用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

从汇编层看64位程序运行——函数的调用和栈平衡

函数调用 不知道有没有人想过一个问题&#xff1a;A函数调用B函数&#xff0c;B函数是如何知道在调用结束后回到A函数中的&#xff1f; 比如下面的代码&#xff0c;main函数调用foo。当foo执行完毕&#xff0c;需要执行main函数的return 0语句。但是main和foo是割裂的&#x…

【排序 】

目录 1&#xff0c; 排序的概念及引用 1.1 排序的概念 1.2 常见的排序算法 2&#xff0c; 常见排序算法的实现 2.1 插入排序 2.1.1基本思想&#xff1a; 2.1.2 直接插入排序 2.1.3 希尔排序( 缩小增量排序 )(面试很少问) 2.2 选择排序 2.2.1基本思想&#xff1a; 2.…

Java巅峰之路---基础篇---综合练习(面向对象)

目录 文字版格斗游戏 基础版 souf输出语句 进阶版 键盘录入的说明 复杂对象数组练习 需求&#xff1a; 添加和遍历 删除和遍历 修改和遍历 文字版格斗游戏 基础版 格斗游戏&#xff0c;每个游戏角色的姓名&#xff0c;血量&#xff0c;都不相同&#xff0c;在选定人…

2024最新Cloudways主机使用教程(含最新Cloudways折扣码)

Cloudways是一家提供云托管服务的公司&#xff0c;可以帮助你轻松管理和运行你的网站。本教程是Cloudways主机注册和使用教程。Cloudways界面简洁&#xff0c;使用方便&#xff0c;不需要复杂的设置&#xff0c;就能快速搭建一个WordPress网站。它的主机功能包括高级缓存和Bree…

Linux命令更新-Vim 编辑器

简介 Vim 是 Linux 系统中常用的文本编辑器&#xff0c;功能强大、可扩展性强&#xff0c;支持多种编辑模式和操作命令&#xff0c;被广泛应用于程序开发、系统管理等领域。 1. Vim 命令模式 Vim 启动后默认进入命令模式&#xff0c;此时键盘输入的命令将用于控制编辑器本身&…

QT控件篇三

一、微调框 微调框&#xff08;QSpinBox&#xff09;是一个常用的Qt控件&#xff0c;允许用户通过增加或减少值来输入数字。分为两种, 整型-QSpinBox 浮点 QDoubleSpinBoxQSpinBox&#xff08;微调框&#xff09;的 setSingleStep 函数可以用来设置每次调整的步长&#xff08;…

Kafka基础入门-代码实操

Kafka是基于发布/订阅模式的消息队列&#xff0c;消息的生产和消费都需要指定主题&#xff0c;因此&#xff0c;我们想要实现消息的传递&#xff0c;第一步必选是创建一个主题&#xff08;Topic&#xff09;。下面我们看下在命令行和代码中都是如何创建主题和实现消息的传递的。…

TDesign组件库日常应用的一些注意事项

【前言】Element&#xff08;饿了么开源组件库&#xff09;在国内使用的普及率和覆盖率高于TDesign-vue&#xff08;腾讯开源组件库&#xff09;&#xff0c;这也导致日常开发遇到组件使用上的疑惑时&#xff0c;网上几乎搜索不到其文章解决方案&#xff0c;只能深挖官方文档或…