php小编子墨在这里为大家介绍一种解决方案,即如何匹配两次出现的相同但随机的字符串之间的字符。当遇到这种情况时,我们可以利用正则表达式和回溯引用来实现。首先,我们使用正则表达式捕获第一次出现的字符串,并将其存储为一个命名捕获组。然后,我们使用回溯引用来引用这个命名捕获组,并在表达式中匹配第二次出现的相同字符串。通过这种方式,我们可以轻松地匹配到这两次出现的相同字符串之间的字符。这是一个简单而有效的方法,希望能帮助到大家。,基本字符串如下所示:,我对这个基本字符串的了解是:,abcxyz
是恒定的并且始终存在。
repeatedrandomstr
是随机的,但它的第一次出现总是在开头和 abcxyz
之前,到目前为止,我研究了正则表达式上下文匹配、递归和子例程,但自己无法想出解决方案。,我当前工作的解决方案是首先确定 repeatedrandomstr
与什么:,^(.*)\sabcxyz
,然后使用:,repeatedrandomstr\sabcxyz\s(.*)\srepeatedrandomstr
,匹配我在 $1
中想要的内容。但这需要两个单独的正则表达式查询。我想知道这是否可以在一次执行中完成。,在使用 re2 库的 go 中,除了你的方法之外没有其他方法:继续提取 abcxyz
之前的值,然后使用正则表达式来匹配两个字符串之间的字符串,如 re2 不支持也不会支持反向引用。,如果正则表达式风格可以切换到pcre或兼容,您可以使用,请参阅正则表达式演示。,详细信息:,^
– 字符串开头,(.*?)
– 第 1 组:除换行符之外的零个或多个字符尽可能少,\s+
– 一个或多个空格,abcxyz
– 一些常量字符串,\s
– 空格,(.*)
– 第 2 组:除换行符之外的尽可能多的零个或多个字符,\1
– 与第 1 组中的值相同。,