繁体   English   中英

PHP Regex:组必须以字符结尾,但不能捕获此字符

[英]PHP Regex: group must end with character but do not capture this character

正则表达式示例:

/^([\w]+:)?other:(.*)$/

示例字符串:

test:other:words...

第一组将匹配“ test:”,但我希望它仅捕获“ test”。 起初我以为:

/^([\w]+)?:?other:(.*)$/

但我意识到一开始我不可能只有一个 我如何捕获一个组,如果存在该组必须以结尾,但是该组一定不能捕获该组?

输入和输出示例:

randomString:constantString:somethingElse

应该给“ randomString”作为第一组。

constantString:somethingElse

应该给第一组为空

如果您希望第一个单词是可选的,请使用:

/^(?:(\w+):)?other:(.*)$/

此正则表达式使\\w+:成为整个非捕获组,并使其可选。 此外,它还使用内部的捕获组来捕获\\w+部分。

因此,如果\\w+:存在,则组1包含\\w+部分,否则它包含一个空字符串。

开始了:

^(?:(\w+):)?constantString:(.*)$

(?:)是一个非捕获组

演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM