当前位置: 首页 > 知识库问答 >
问题:

Perl正则表达式|如何使用负前瞻(?!)在非捕获组内(?:)[重复]

南门新荣
2023-03-14

我想在Perl正则表达式中的非捕获组中使用负前瞻。到目前为止,我已经创建了一个表达式,它不允许将3个“字符对”放入字符串中

CASE 1: ^(?!(?:\w*(.)\1){3}).+$

For example the string: Mytte!3sttStrring  | Not pass - 3 pairs | "tt","tt","rr"

如果你看到组前有一个负面的展望,我想将这个表达式添加到一个组中。为了理解这一点,我将向您展示另一个只禁止一对或字符的示例。

CASE 2 : no match if there is a pair in string:   (?=^(?:(.)(?!\1))*$)

如果在中测试这两个表达式https://regex101.com/您将看到,对于案例2中的字符串“MySampleString”,我有2个匹配信息。(全场比赛和第1组比赛)。现在,如果运行第一个模式(案例1),您将只看到完全匹配的匹配信息。

在我的尝试中,在CASE 1中添加分组匹配选项,将括号放在周围:

CASE 1 my try:   (^(?!(?:\w*(.)\1){3}).+$)

但现在里面的表达不起作用了:/

我想找到一种方法, ^(?!(?:\w*(.)\1){3})。$将工作(全匹配和Group1匹配)。我必须将此选项添加到我正在处理的一个很长的正则表达式中,它不能作为全匹配组工作。为了更清楚起见,我将向您展示一个示例,即字符串不得有“一对字符”,同时不得包含任何字母的4次重复。

        (?=^(?:(.)(?!\1))*$)(?=^(?:(.)(?!(?:.*?\1){4}))*$)

这两个表达式 (? =^(?:(.)(?! \1))$)和 (? =^(?:(.)(?!(?:.? \1){4}))*$) 组合,因为它们都有分组匹配。

共有1个答案

皇甫波峻
2023-03-14

如果你所说的组合是指与

^(?!(\S)\1)(?!(\S)(?:\S*?\2){4})\S+ 

如果你说的“combine”是或

^(?!(\S)\1|(\S)(?:\S*?\2){4})\S+ 
 类似资料:
  • 问题内容: 我正在尝试对Elasticsearch查询进行否定前瞻,正则表达式为: 我要匹配的文本是: 归还了住宿费用,但仍存在建筑问题。喷洒化学药品会引起健康问题,并引起眼睛刺激。 我没有任何幸运。有人可以帮忙吗? ES查询: 问题答案: 您可以使用以下两种方法之一来解决此问题: 要么 带可选的(因为 默认情况下 为ON ) 它是如何工作的? 在常见的NFA正则表达式中,通常会有负面的环顾四周,

  • 在Python中,如何在非捕获组中捕获组?换句话说,如何重复包含捕获组的非捕获子模式? 例如,捕获导入字符串上的所有包名。例如,字符串: 导入熊猫、操作系统、系统 将返回“pandas”、“os”和“sys”。下面的模式捕获第一个包并到达第二个包: 从这里,我想重复捕获组并匹配以下字符的子模式,即。当我用一个非捕获组包围这个子模式并重复它时: 它不再捕捉里面的群体。

  • 我有以下示例文本 当我应用以下正则表达式时,当我打印第一个捕获组时,我期望以下输出 但是我最终得到的是 在我看来,由于某种原因,否定的先行部分被忽略了,因此正则表达式与整个字符串匹配。 真正让我困惑的是,积极的前瞻性正如我所期望的那样工作。例如,使用在打印第一个捕获组时返回以下内容 这是有道理的,所以我真的很困惑为什么消极的前瞻性没有正常运作。

  • 本文向大家介绍PHP正则表达式之捕获组与非捕获组,包括了PHP正则表达式之捕获组与非捕获组的使用技巧和注意事项,需要的朋友参考一下 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同时也希望有大神和细心的学习者找到我理解中

  • 假设我有这个虚拟URL,我需要提取植物及其颜色作为 下面的I have正在按预期捕获我需要的元素,但是当我的URL中的植物少于4株时,它无法捕获任何东西。底部有一个指向regex测试员的链接,其中有示例代码和URL,您可以使用。 如何修改这个正则表达式,使其动态工作,从而在不需要静态URL结构的情况下捕获可用内容。现在,假设我最多只能捕获4株植物(8组) https://regex101.com/

  • 我是一个完全的正则表达式新手,花了几个小时试图解决这个难题。我认为我必须使用某种可选的非捕获组或交替。 我想匹配以下字符串: > 诺伊尔电影 a von 1000 诺伊尔电影a von 1000 mit b 诺伊尔电影a von 1000 mit b und c 1000英镑的新电影 诺伊尔电影公司 诺伊尔电影a mit b und c 诺伊尔电影a mit b und c und 我的正则表达式