我正在regex101上测试这个。通用域名格式
正则表达式:^\([0-9A-Za-z-])(?:\([0-9A-Za-z-])*$
测试字符串:测试条。baz bz。fd。zz
字符串匹配,但“匹配信息”框显示只有两个捕获组:
匹配1 1。[1-9]'beta bar'2.[20-22]'zz'
我期待着所有这些捕捉:
为什么周期之间的每个标识符都没有被识别为自己捕获的组?
发生这种情况的原因是,当在捕获组上使用量词并捕获n次时,只有最后捕获的文本存储在缓冲区中并在末尾返回。
你可以用一个简单的正则表达式preg_split
你拥有的字符串,而不是匹配这些部分
:
$str = "+beta-bar.baz-bz.fd.zz";
$a = preg_split('/[+.]/', $str, -1, PREG_SPLIT_NO_EMPTY);
参见IDEONE演示
结果:
Array
(
[0] => beta-bar
[1] => baz-bz
[2] => fd
[3] => zz
)
我有以下文字: 我想匹配每个分子,包括它的系数。下面的正则表达式几乎正常工作,但是空格字符,就在最后一次匹配之前,正在匹配,这不应该。这是我正在使用的正则表达式:
问题内容: 我正在使用Java的正则表达式库。我想针对以下格式验证字符串: 数字的数量未知。我想确保该字符串中至少有一个数字,并且每两个数字之间用逗号分隔。我也想从字符串中获取数字。 ( 注意: 这只是一个简化的示例,string.split无法解决我的实际问题) 我写了以下正则表达式: 验证部分起作用。但是,当我尝试提取数字时,我得到了2组: regex101版本:https://regex10
我有一个字符串,可以通过以下方式格式化: 我试图(分别)捕获: 这是我的正则表达式:(也可能是,因为我不关心完整的捕获,只关心它的各个部分)。它捕获: 或(备用) 我不太明白如何让重复捕获组捕获所有单个实例,而不是整个事物,并且只是最后一个实例或只是最后一个实例。
你知道这里怎么了吗? 我想捕获“”之间的组。例如,如果字符串为 匹配器应捕获:
问题内容: 在下面的代码段中,匹配结果中的 非捕获组应被忽略, 结果应该是。 但是,我得到了匹配结果。仅当我指定group(2)时才显示。 问题答案: 并返回整个比赛。随后的组是实际的捕获组。 如果您想要相同的行为:
假设我有这个虚拟URL,我需要提取植物及其颜色作为 下面的I have正在按预期捕获我需要的元素,但是当我的URL中的植物少于4株时,它无法捕获任何东西。底部有一个指向regex测试员的链接,其中有示例代码和URL,您可以使用。 如何修改这个正则表达式,使其动态工作,从而在不需要静态URL结构的情况下捕获可用内容。现在,假设我最多只能捕获4株植物(8组) https://regex101.com/