问题标签 [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 投票
0 回答
220 浏览

drupal - Drupal 7:命名引用

我正在使用 Drupal 7 开发一个网站,我需要从一个节点到另一个节点的反向引用,但我还需要为这些关系命名;从 A 到 B 和 B 到 A 的名称不同,但它们都是预定义的(即电影 A 引用电影 B 作为续集,因此电影 B 自动反向引用电影 A 作为前传)。我寻找了一些模块,我只找到了 Drupal 7 的“相应节点引用”,但它只完成了一半的工作:它进行反向引用,但它没有命名它们。那么,¿你知道任何可以进行反向引用并命名它们的模块吗?我将非常感谢您的回答谢谢

0 投票
2 回答
636 浏览

regex - Vim 正则表达式:覆盖反向引用?

项目:

以维基百科的罗马执政官列表为例,将数据放在 CSV 中,这样我就可以绘制出各个家族在执政官方面的兴衰图表

示例数据源:

Vim 搜索:

所以本质上:

  1. 查找开头的年份(或 suffect consul 的指示):(\d+|suff\.)
  2. 下一个分组(我们称之为外组)最多需要找到两次:(outer group){,2}
  3. 对于这两个外部组中的每一个,找到:
    1. Praenomen,带有可选句号(有时不存在):(\w+.=)
    2. 无人:(\w+)
    3. 可选的认知(包括空格,如下所示):(\s\w+)=
    4. 可选的 agnome:(\s\w+)=
    5. 可选迭代​​(表示他第 n 次担任领事)。数据源的迭代次数不超过 8 次(所以 I 和 V 就足够了):(\s[iv]+)=
    6. 可选的解释性说明,例如“Sicinius (Sabinus?)”:(\s\(.{-}\))=

(最后一个逗号是可选的,因为它是行尾。)

所以后面的引用结果是:

问题是我不知道如何捕获第一个外部组。就像 \2 和 \3-\8 引用在看到第二个外部组时被覆盖。

使用此替换:

我得到这个输出:

我无法访问第一个外部组中的那些组。我认为它们被覆盖了:它们被覆盖了吗?如果是这样,有没有办法解决这个问题?

编辑:原标题 Vim 正则表达式(或任何兼容的正则表达式):如果迭代外部组,如何引用组(组内)?

0 投票
1 回答
778 浏览

replace - 正则表达式 - 查找特定字符之前的第一个字符(如 Excel 的 LEFT 函数)

我正在尝试找到一种方法来查找/替换 .csv 文件(单列)中的电子邮件地址,其中包含@符号前的前 10 个字符。一个示例 CSV 文件将是:

我想要的输出是:

到目前为止,我已经找到了如何通过以下方式摆脱@和接下来的一切:

查找: (.*)@.* 替换: \1

我希望我可以在 \1指定仅替换 \1.

有什么想法吗?

0 投票
3 回答
270 浏览

regex - 对包含固定重复次数的组的成分的反向引用

我想找到一个彼此重复 x 次的组,例如,由空格分隔的字母数字组合五次。我可以使用简单的重复语法,例如(?:\w\d ){5}.

然后我想用其他东西替换这个 5x 字母数字中的空格。为此,我尝试通过在其周围放置括号来反向引用每个字母数字组合(不带空格)(?:(\w\d) ){5}:. 不幸的是,所有五个都存储在 中$1,即$1每次匹配时都会被覆盖。

那么,有没有办法避免这种覆盖?或者有没有办法只在子字符串中替换一些东西?

编辑:

示例输入字符串:A1 A3 A4 B6 ::: A1 A3 A4 C5 B6

所需的输出字符串:A1 A3 A4 B6 ::: A1-A3-A4-C5-B6

这意味着,仅当其中有五个时才替换空格。在 Perl 中实现。

0 投票
2 回答
1849 浏览

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

我想构造一个正则表达式,它匹配'or"然后匹配其他字符,在分别匹配 a'或 an时结束",具体取决于在开始时遇到的内容。所以这个问题看起来很简单,可以在最后使用反向引用来解决;下面是一些正则表达式代码(它在 Java 中,所以请注意额外的转义字符,例如\之前的"):

此代码将成功处理以下内容:

当我有这样的字符串时,麻烦就来了:

使用上面的正则表达式将在遇到初始部分时失败,'然后它将继续并成功匹配'may be taken'......但这显然是不够的,我需要匹配整个字符串。

我在想的是,我需要一种方法来忽略第一组中不匹配的引号类型,方法是将其作为字符包含在第三组的字符集中。但是,我知道没有办法做到这一点。是否有某种鬼鬼祟祟的 NOT 反向引用函数之类的?我可以用它来引用第一组中不匹配的字符??或者以其他方式解决我的困境?

0 投票
2 回答
473 浏览

regex - Perl 的 unpack("A4/A*") 正则表达式形式的长度+字节语法

如 perlpacktut 中所述,您可以使用 X/Y* 的解包字符串首先获取字节流的长度,然后准确读取那么多字节。但是,我很难在正则表达式中找到类似的东西,比如纯 ASCII 数字和字符串。例如,Bencoded 字符串的形式为:

我记得曾经能够做到这一点,但只能使用 ??{},而且我现在手头没有代码。这可以在没有 ??{} (这是超级实验性的)的情况下使用较新的 5.10 捕获/反向引用之一来完成吗?

明显的表达不起作用:

0 投票
3 回答
338 浏览

regex - 为什么我的正则表达式中的反向引用不起作用?

我写了一个正则表达式试图匹配一些 html 代码,但我不能完全工作。我在“wp-caption”之后的部分有问题。

我要匹配的代码:

我匹配前三个结果,但不是第四个。我不认为 \1 正在工作。有什么想法吗?

BTdubs 我一直在使用http://regexpal.com/进行测试。

0 投票
1 回答
3000 浏览

regex - VBA Regex .Replace 方法中允许多少个参数?

!我正在使用 VBA 正则表达式的替换方法,想知道它可以接受多少个参数?我已经看到提供了许多不同选项的 msdn 页面,但我不确定该使用哪个。这是该页面的链接:MSDN 页面:Regex.Replace 方法

如果可能的话,我希望能够在“替换为”参数中使用反向引用和其他 VBA 正则表达式。

例如,我目前只能这样做(文字替换)

我想这样做,例如:

或者

如何在 VBA 正则表达式中执行此操作?

谢谢你的帮助!

0 投票
6 回答
10385 浏览

regex - 清除正则表达式匹配变量的最佳方法是什么?

清除/重置所有正则表达式匹配变量的最佳方法是什么?

  • 示例如何$1在正则表达式操作之间不重置并使用最近的匹配:

    /li>
  • 示例在使用循环时这可能会出现问题:

    /li>

更新:我认为我不需要这样做,但 Example-2 只是一个示例。这个问题是关于重置匹配变量,而不是实现它们的最佳方法。

无论如何,最初我的编码风格更符合明确和使用 if 块。现在回到这个(Example2)之后,阅读多行代码会更加简洁,我会发现这种语法更快地理解。

0 投票
1 回答
111 浏览

regex - 如何使用 ack (或等效项)返回字符串的一部分?

我在文件中有一行,如下所示:

我想使用 ack 或 grep 或其他东西bar从该字符串中返回。到目前为止,我有:

但不知道如何让它只吐出第一个反向引用,而不是整行。