regex - 正则表达式匹配大于长度的字符串,但不包括结尾匹配
问题描述
正如标题所述,我正在寻找一个匹配大于给定长度的字符串的正则表达式,所以:
[\s\S]{51,}
所以以下将匹配:
Cras risus ipsum, faucibus ut, ullamcorper id, varius ac, leo.
以下不会:
Vestibulum volutpat pretium libero.
但是,我想要一个附加条件,即应从字符计数中排除出现在字符串末尾的特定字符序列。该序列本身可以由正则表达式定义。例如:
something\/[\w]+\/at-the-end\/[\d]+$
因此,以下内容仍应匹配:
Cras risus ipsum, faucibus ut, ullamcorper id, varius ac, leo.
以下内容仍然不应该:
Vestibulum volutpat pretium libero. something/random/at-the-end/12345
我在想,如果可能的话,它会以某种方式涉及环视,但我不知道我将如何构建它。我正在寻找使用单个正则表达式的解决方案。
解决方案
您可以尝试使用负前瞻来调整模式匹配:
^((?!at-the-end\/\d+)[\s\S]){51,}[\s\S]*$
演示
该模式背后的基本思想是,只要后面的不是,它将使用任何单个字符, at-the-end/
然后是一个或多个数字,然后是字符串的末尾。
推荐阅读
- windows - Windows 8/10 API Detect suspended process
- javascript - javascript 从数组创建嵌套的 JSON 数组
- dart - 如何在 BottomNavigationBarItem 中绝对定位徽章
- html - 对齐框内的图像、文本和标题
- python - 从匿名生成器构造列表的 Pythonic 习语
- laravel - Laravel - 如何在应用服务提供商中获取用户 ID
- php - 用户删除商品时如何自动更新购物车?
- verilog - 如何修复 Xst:528 此信号连接到多个驱动程序
- asp.net-mvc - ASP.NET Web API 和 MongoDB Atlas - 从数据库中检索特定数据的方法
- python - 读取文本文件返回 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in Python