问题标签 [backreference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
56 浏览

.net - 将多个表达式优化为一个

背景

我有一个场景,我必须一遍又一遍地在文本中找到某些单词。我目前以这样的格式使用了一系列正则表达式......

...

这个 Regex 对象列表是用一大块数据循环的,并且匹配项被拉出(一个循环用于一个 regex.matches(data) 调用)

我已经尽我所能来优化它们,例如事先编译它们。

然而,这个列表越来越长,我决定开始制作更大的编译正则表达式来优化这个过程。如...

这提供了巨大的速度改进,但是有一个副作用,我无法弄清楚如何纠正。

当单词并排在数据中时(例如空格分隔。例如“Word1 NextWord AnotherWord”),捕获中会丢失第二个单词,因为“Word1”的正则表达式还包括尾随空格。“NextWord”可能出现的匹配不再具有前导空格,因为它是前一个匹配的一部分。

问题

任何人都可以更改此正则表达式(.net 格式)

只需一次调用“.matches(data)”,即可捕获下面此列表中的所有单词

? (不牺牲效率增益)

结果

只是想我会提到这一点。在应用建议的答案/更正并向前看后,我现在知道如何使用:),我刚刚修改的代码的速度提高了 347 倍(旧测试速度的 0.00347%)。当您遇到多个表达式时,这绝对是要记住的事情。很高兴。

0 投票
1 回答
149 浏览

regex - 是否可以使用正则表达式进行算术运算?

我想知道是否有办法匹配整数及其继承者:

我想匹配:“1 Victor 2 Marconi”

但不是:“1 Victor 3 Marconi”

有没有办法反向引用第一个数字并像这样增加它: (\d) [[:alpha:]]* \1 +1 [[:alpha:]]* (INVALID)

我不知道 regexp 是否是正确的工具。如果不是,那会是什么?

0 投票
2 回答
721 浏览

php - php preg_match_all 反向引用

对于以下输入字符串、模式和:

print_r 的输出如下:

正如你所看到的,Array[2] 给了 Aditya Parikh,我也希望能收到 Vinton Heuck 和 Ciro Nieli。但没有。

有什么解决办法??

0 投票
2 回答
971 浏览

c# - 带有反向引用的正则表达式

我试图在 C# 应用程序中编写一个正则表达式来查找“{value}”,以及对它之前的文本的反向引用到“[[”,以及对它之后的文本的另一个反向引用到“]]” . 例如:

将匹配“[[反向引用一”、“{value}”和“\r\n反向引用二]]”。

我尝试过以下修改版本,但没有成功。我相信我缺少单词边界,并且可能因为我试图查找的文本中的“{”而遇到麻烦。

我不确定是否可以使用正则表达式,但如果它可以找到匹配的右括号,那将是理想的,例如以下将找到 "[[backreferenc[[e]] one ", "{value} ”和“ba[[ckref[[e]]rence t]]wo]]”:

0 投票
1 回答
130 浏览

regex - 带有反向引用的正则表达式

所以我有这个非常长的文件,其中有这样构建的行:

我必须在括号之间搜索至少 9 个 + 或 - 字符的字符串,并且必须在括号旁边的两个“>”之间找到在这些括号之间匹配的相同内容......到目前为止我想出了这;

0 投票
1 回答
218 浏览

java - 是否可以对非捕获组进行反向引用?

我正在尝试创建一个正则表达式/替换对来使用replaceAll()它将捕获目标字符串之前和之后的字符。

这是我的版本,适用于简单的情况:

根据需要产生"abcd"(最后的展望是消耗到字符串的末尾,使单个调用replaceAll()起作用)。

但是,当目标之后的字符也是目标之前的字符时,我似乎无法解决一个边缘情况:

生产"ab",但我想"abbd"。正则表达式消耗了匹配的前导部分,使以下输入不匹配。

我试过环顾四周,但似乎无法让它工作。


注意:我对涉及循环或代码等的解决方案不感兴趣。只是寻找适用于提到的边缘情况的正则表达式和替换字符串。

0 投票
1 回答
121 浏览

php - 使用反向引用对模式进行反向引用

考虑(\w[0-9]).*\1RegEx,它匹配d1akdhfafd1,R2ddsfasfasfdsfdR2等。

是否可以编写一个与以下内容匹配的正则表达式:D1dfsadfadsfE3, z6adfdasfdfr2, e3654654e0,....?

\w[0-9]只是一个例子,请考虑一般形式(::A_Complex_Pattern::).*\1

0 投票
1 回答
117 浏览

javascript - 如何在 JavaScript 中更新反向引用内联?

给定以下代码:

预期的输出是:

实际输出为:

这导致我找到了这个解决方法:

如何在不需要匹配更新反向引用的情况下执行此操作?

0 投票
1 回答
822 浏览

java - Java - 数组中的正则表达式反向引用

有没有办法使用正则表达式拆分 Java 字符串并返回一个反向引用数组?

举个简单的例子,假设我想从一个简单的电子邮件地址(仅限字母)中提取用户名和提供者。

这应该输出

0 投票
1 回答
668 浏览

inheritance - SQLAlchemy 和带有 backrefs 的多态继承

我有类NodeLeaf (Node)如下所示: 它工作正常,但我更愿意将leafsandsubleafs定义转移到Leaf (Node)类。我该如何做到这一点?

我试过这个,但失败了(部分):

我的删除测试用例不喜欢这样(只是删除树中的基本/根节点并依赖cascade='all'),并抱怨:

我想改变定义的原因是,因为我不想扩展Node的每个子类的定义,Leaf (Node)稍后我可能会介绍。此外,我绝对不需要_xand _y,因为我已经有了Leaf.rootand Leaf.base(由 提供Node);但是省略它们(_x =& _y =)会带来麻烦,例如:

我想我需要使用一些东西Leaf (Node)附加关系,即使我不需要在我的原始定义中使用任何反向引用 forleafssubleafsin Node。谢谢。