草庐IT

backreference

全部标签

ruby - regexp\k<name+0> 中的 "+0"是什么意思?

我是Ruby中正则表达式的新手,我似乎找不到任何关于\k内容的可靠文档。方法。这是+0我没有得到的部分。这是一个例子——这个正则表达式匹配回文:\A(?(?:(?\w)\g\k|\w))\z当我删除+0在\k它不再正确匹配。我的测试:>>/\A(?(?:(?\w)\g\k|\w))\z/.match"aabbcdcbbaa"#=>#>>/\A(?(?:(?\w)\g\k|\w))\z/.match"aabbcdcbbaa"#=>nil我所做的就是删除+0.我还没有找到任何文档或示例,任何人都可以指出正确的方向吗? 最佳答案 \k与(

ruby - 使用分组时如何使用 gsub 在 Ruby 正则表达式 (regex) 中反向引用?

我想修补一些从网页中提取的文本数据。示例:t="Firstsentence.Secondsentence.Thirdsentence."第二句末尾点后没有空格。这表明第3句话在原始文档中位于单独的一行(在br标记之后)。我想使用此正则表达式将“\n”字符插入适当的位置并修补我的文本。我的正则表达式:t2=t.gsub(/([.\!?])([A-Z1-9])/,$1+"\n"+$2)但不幸的是它不起作用:“NoMethodError:undefinedmethod‘+’fornil:NilClass”如何正确反向引用匹配的组?在MicrosoftWord中非常简单,我只需使用\1和\2符

regex - golang regexp ReplaceAllStrings with backreference不太管用

尝试将单词开头的每个字母大写。我知道有strings.Title,但这对我的需要来说太不精确了。我不确定为什么这不起作用:packagemainimport("fmt""regexp""strings")funcmain(){re:=regexp.MustCompile(`\b([a-z])`)fmt.Println(re.ReplaceAllString("myteststring",strings.ToUpper("$1")))}https://play.golang.org/p/C-8QG1FrOi 最佳答案 你应该使用Rep

php - 在没有括号的 RegEx 中分组竖线分隔的选项?

是否可以在不使用括号的情况下对正则表达式的各个部分进行分组?或者,换句话说,不匹配某些括号语句?这就是我的意思——考虑以下正则表达式:$pattern='/^(what|where|who)(are|is)(.+)$/i';preg_match($pattern,$input,$matches);现在。注意前两个子查询——带有竖线的子查询。我如何防止这些出现?如果$input是“whoishe”,我希望“he”是唯一匹配的子查询。我明白,在这个例子中,我可以只获取$matches[3],这会给我正确的结果。然而,由于我的应用程序的性质,我正在动态生成正则表达式,并且结构不会总是像我在这

php - 您可以在正则表达式的模式部分使用反向引用吗?

有没有办法在正则表达式模式中反向引用?示例输入字符串:Hereis"somequoted"text.假设我想提取引用的文本,我可以创建以下表达式:"([^"]+)"此正则表达式将匹配somequoted。假设我希望它也支持单引号,我可以将表达式更改为:["']([^"']+)["']但是,如果输入字符串混合了引号怎么办,比如Hereis'somequoted"text.我不希望正则表达式匹配。目前,第二个示例中的正则表达式仍然匹配。我希望能够做的是,如果第一个引号是双引号,那么结束引号必须是双引号。如果开始引号是单引号,那么结束引号也必须是单引号。我可以使用反向引用来实现吗?我的其他相

php - 关于回溯控制动词的信息

我一直在搜索关于这个动词的信息,关于这方面的信息不多,我只找到这样的信息Wikipedia但与动词无关,他们刚刚提到了。我用谷歌搜索,但没那么幸运,我刚刚从这里(堆栈溢出)找到了应用它的例子。但是没有解释。我想知道它们是否可用于PCRE,因为我使用PHP,我看到了一个关于此的示例,但我不知道。我想知道是否存在信息、动词列表等,谢谢示例(*任何)(*失败) 最佳答案 可以看看here和here.直接改变回溯的两个构造是原子组和占有(super贪婪)量词。附言对不起,如果我误解了这个问题 关

php - 如何在递归正则表达式中进行反向引用匹配?

我有这样一个字符串:$data='id=1username=foobarcomment=Thisisasamplecomment';我想删除第三个字段中的\n(comment=...)。我有这个正则表达式可以满足我的目的但不是很好:preg_replace('/\bcomment=((.+)\n*)*$/',"comment=$2",$data);我的问题是第二组中的每个匹配项都会覆盖前一个匹配项。因此,而不是有这个:'...comment=Thisisasamplecomment'我最终得到了这个:'...comment=comment'有什么方法可以将中间反向引用存储在正则表达式中

php - 用 preg_replace 包裹 <b> 标签中的第一个单词——不能引用全字符串匹配

我用http://gskinner.com/RegExr/生成了以下正则表达式代码它在哪里工作,但是当我用PHP执行它时,它无法在替换字符串中使用匹配项。preg_replace('/(?)\b\w*\b|^\w*\b/','$&','anexample');输出:$&example预期:anexample我知道显然$&没有做正确的事情,但我怎样才能让它工作? 最佳答案 改用这个试试preg_replace('/(?)\b\w*\b|^\w*\b/','$0',$string);$0表示它将成为您的正则表达式中第一个匹配的东西,$1

java - 正则表达式;反向引用字符集中不匹配的字符

我想构造一个正则表达式,匹配'或"然后匹配其他字符,以'或"分别匹配,具体取决于开始时遇到的情况。所以这个问题看起来很简单,可以在最后使用反向引用来解决;下面是一些正则表达式代码(它是在Java中,所以请注意额外的转义字符,例如"之前的\):privatestaticStringseekerTwo="(['\"])([a-zA-Z])([a-zA-Z0-9():;/`\\=\\.\\,\\-]+)(\\1)";此代码将成功处理诸如以下的事情:"hellomynameisbob"'iliveinbethnalgreen'当我有这样一个字符串时,麻烦就来了:"hellothisseat'm

java - 回顾中的反向引用

你能在回顾中使用反向引用吗?假设我想split在我身后任何一个字符重复两次的地方。StringREGEX1="(?使用REGEX2(反向引用在前瞻中嵌套在lookbehind中)有效,但REGEX1在运行时给出此错误:Look-behindgroupdoesnothaveanobviousmaximumlengthnearindex8(?我想,这种的是有道理的,因为通常反向引用可以捕获任意长度的字符串(不过,如果正则表达式编译器更聪明一点,它可以确定\1在这种情况下是(.),因此具有有限的长度)。那么有没有办法在回顾中使用反向引用?如果没有,您是否总是可以使用这种嵌套的先行解决它?还有