这里有一个正则表达式。试试下面的字符串,我面临的问题是,在第一个组之后,每个捕获组的开头都有一个额外的空格。我需要匹配空白,但不需要捕捉它们。
正则表达式:
^(\/[a-zA-Z0-9]+)?(\s~[a-zA-Z]+)?([\w\s'()-]+)?((?:\s~[a-zA-Z]+){0,2})?$
在上面的链接上查看它会使理解变得更简单。
这些是您可以一个接一个地粘贴到测试字符串区域中的一些字符串:
/test ~example matches ~extra ~space
this too has an extra ~space ~matched
/like wise for this
/and ~this
查看匹配组区域,注意在第1组之后,组之间的前1个空格被捕获。
我想做的是:
对于第一个和第二个捕获组,我希望他们检测到一个后续空间并吸收它,但不捕获它,这样第三个捕获组就不会检测并捕获额外的空间。对于第四个捕获组,我希望它检测到前面的空间并吸收它,但不捕获它。
我所说的吸收是指空间被“移除”,从某种意义上说,第三个捕获组不会意识到它的存在。
我怎么能这么做呢?
谢谢
试试这个正则表达式:
^(\/[a-zA-Z0-9]+)?\s?(~[a-zA-Z]+)?\s*([\w\s'()-]+)?\s?((?:~[a-zA-Z]+\s?){0,2})?$
我想这就是你想要的:
^(\/[a-zA-Z0-9]+)?(?:(\s~[a-zA-Z]+)\s)?([\w\s'()-]+)?(?:\s((?:~[a-zA-Z]+\s?){0,2}))?$
这是我想出的正则表达式-
^(\/[a-zA-Z0-9]+)?(?:\s)?(~[a-zA-Z]+)?(?:\s)?([\w\'()\-\s]+)?(?:\s(~[a-zA-Z]+))?(?:\s(~[a-zA-Z]+))?$
按照要求将正则表达式分成2部分——
对于第一个和第二个捕获组,我希望他们检测到一个后续空间并吸收它,但不捕获它,这样第三个捕获组就不会检测并捕获额外的空间。
第一组和第二组的正则表达式-
(\/[a-zA-Z0-9]+)?(\s~[a-zA-Z]+)?
所以,在第一次和第二次捕获组之后,我添加了一个非捕获(?:\s)。这允许第三个捕获组不吸收前面的空间。这是我的正则表达式-
(\/[a-zA-Z0-9]+)?(?:\s)?(~[a-zA-Z]+)?(?:\s)?
对于第四个捕获组,我希望它检测到前面的空间并吸收它,但不捕获它。
你的正则表达式
((?:\s~[a-zA-Z]+){0,2})?
在这里,一个显而易见的解决方案是只捕获文本部分([a-zA-Z]),而不捕获\s部分。像这样的,
(?:(?:\s(~[a-zA-Z]+)){0,2})?
^^^^^^^^^^ Capturing only this.
但这是一个重复的捕获组,在这个组中,您实际上是在旧元素的基础上捕获一个新元素。基本上,重复捕获组只捕获最后一次迭代。所以如果你想匹配-
“~space~matched”
,它将只捕获最后一个“~matched”
。
一个解决方案是,既然你在检查{0,2},你可以显式地检查它两次,就像这样-
(?:\s(~[a-zA-Z]+))?(?:\s(~[a-zA-Z]+))?
但是,如果以后对{0,2}的要求发生变化,那么最好的解决方案是捕获前面的空格并将捕获的组分开为空格。
-> OUTPUT - when I run this regex for the given strings in JavaScript-
["/test ~example matches ~extra ~space", "/test", "~example", "matches", "~extra", "~space", index: 0, input: "/test ~example matches ~extra ~space"] (index):18
["this too has an extra ~space ~matched", undefined, undefined, "this too has an extra", "~space", "~matched", index: 0, input: "this too has an extra ~space ~matched"] (index):18
["/like wise for this", "/like", undefined, "wise for this", undefined, undefined, index: 0, input: "/like wise for this"] (index):18
["/and ~this", "/and", "~this", undefined, undefined, undefined, index: 0, input: "/and ~this"]
希望这有所帮助。
本文向大家介绍PHP正则表达式之捕获组与非捕获组,包括了PHP正则表达式之捕获组与非捕获组的使用技巧和注意事项,需要的朋友参考一下 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同时也希望有大神和细心的学习者找到我理解中
我试图捕获关键字后面的文本,一直到行的结尾。我花了很多时间在堆栈交换和在线regex测试人员上,试图找到正确的组合。 我非常接近,但我的输出继续捕获新的行。regex101.com声明.*?匹配任何字符(换行符除外)。我很难理解为什么它总是捕获换行符。 下面是我正在搜索的文本的一个片段: Blahblahlah\n公司:BALDWIN LINE CONST OF MD Inc\n联系人姓名:STE
我正在使用< code>ControllerAdvice来处理我的应用程序中的异常,它工作正常。然而,我开始使用Spring Security,通常我应该在下面的方法中捕获AuthenticationExceptions。 当我删除异常处理类时,我可以在此方法中捕获AuthenticationException。但是,当我使用异常处理机制时,它会在方法之前捕获AuthenticationExcep
本文向大家介绍如何让事件先冒泡后捕获?相关面试题,主要包含被问及如何让事件先冒泡后捕获?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 在DOM标准事件模型中,是先捕获后冒泡。但是如果要实现先冒泡后捕获的效果,对于同一个事件,监听捕获和冒泡,分别对应相应的处理函数,监听到捕获事件,先暂缓执行,直到冒泡事件被捕获后再执行捕获之间。
我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。
问题内容: 我想将预览层“流式传输”到我的服务器,但是,我只希望发送特定的帧。基本上,我想拍摄AVCaptureVideoPreviewLayer的快照,将其缩放到28 * 28,将其转换为强度数组,然后将其发送到我的python后端处理其余部分的套接字层。 这里的问题是AVCapturePhotoOutput的捕获功能异常缓慢。我不能重复调用该函数。更不用说它总是使相机的快门声哈哈。 另一个问题