问题标签 [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 回答
259 浏览

c# - 使用正则表达式检查两个命名匹配组的相等性

我有这个正则表达式:

我想要实现的是,检查begintagendtag是否相等。
考虑这个输入:

有什么办法可以检查吗?

提前致谢。

0 投票
3 回答
1041 浏览

c# - 如何替换正则表达式中除了最后一个重复的字母之外的所有字母?

这是我想在正则表达式中进行的转换的表格:

换句话说,如果字符串是重复 2 次或更多次的相同字母,我想用 Z 替换最后一个之外的所有字母。

我在这里被精神封锁了。到目前为止,这是我想出的,但它不起作用:

我不确定是否可以在捕获组之前使用反向引用,但无论哪种方式,用第一个替换\1.没有帮助。

我正在使用 C#,所以我正在寻找 .NET 风格的正则表达式。我当然可以通过正常的字符串操作来做到这一点,但我有一个特定于业务案例的需要使用正则表达式。

0 投票
2 回答
3701 浏览

python - Python 正则表达式:反向引用

这是 Python 2.5 代码(fox用链接替换单词<a href="/fox">fox</a>,它避免了链接内的替换):

输出是:

  1. 我不确定为什么反向引用\3不起作用。

  2. (?!((<.*?)|(<a.*?)))(fox)(?!(([^<>]*?)>)|([^>]*?</a>))作品见http://regexr.com?3170 亿,令人惊讶。第一个负前瞻(?!((<.*?)|(<a.*?)))让我感到困惑。在我看来,它不应该工作。取它找到的第一个匹配项,fox在 中gave chase to the fox.</p>,有一个<a href='http://en.wikipedia.org/wiki/Dog'>dog</a>where 匹配项((<.*?)|(<a.*?)),作为否定的前瞻,它应该返回一个 FALSE。我不确定我是否清楚地表达了自己。

非常感谢!

(注:我讨厌使用 BeautifulSoup。我喜欢编写自己的正则表达式。我知道这里很多人会说正则表达式不适用于 HTML 处理等等。但这是一个小程序,所以我更喜欢正则表达式而不是 BeautifulSoup)

0 投票
4 回答
2169 浏览

sed - sed 's/.../...': 是否可以存储子表达式供以后使用?

假设我有类似的东西:

sed 的典型用法是将“疯狂大小写”字符串转换为混合大小写(第一个字母大写,其余字母小写)

但是,这将始终影响整个字符串。例如,如果我想解析各种风格的“疯狂”mp3 文件名($tracknr - $artist - $title 与 $artist - $tracknr - $title),事情会变得更加复杂,因为有时标题是外语的像法语和混合大小写在法语或意大利语中看起来很糟糕。这就是为什么我只想继续直到达到某个分隔符,例如空格-破折号-空格。

因此,我想使用组合的 's/.../...' 表达式来一步一步地做事。但是,如果有一种方法可以从 PREVIOUS 表达式中“存储”子表达式,让我能够将保留的子匹配用作下一个 sed 替换表达式的源表达式,那就太好了。

如果您认为无论如何都可以使用 OOTB,那您就错了。您只是不能在分号后的第二个表达式中使用 '\1' 语法来引用前一个表达式的子表达式(当然,一旦您在第二个表达式本身中定义了子表达式,它就可以工作,但现在不考虑这种可能性)。在我的情况下,解析器不知道,你会得到错误

有什么东西可以执行这种事情吗?

0 投票
3 回答
1121 浏览

javascript - 如何忽略 $1 替换 JavaScript 中的反向引用

我有一个用户可以随时编辑的字符串,以及一个正在对该字符串执行的正则表达式,以将其添加到 xml 中,然后将其保存,但他们可以将“$1”添加到字符串中。我只想保存文本'$1',但我必须对 $1 所在的同一字符串执行正则表达式。它每次都用正则表达式中的字符替换 $1。

如何找到并替换此字符串中的 $1?

正在发生的事情的例子:

结果

0 投票
4 回答
3183 浏览

regex - 正则表达式中的反向引用如何使回溯成为必需的?

我阅读了http://swtch.com/~rsc/regexp/regexp1.html并且作者在其中说,为了在正则表达式中有反向引用,匹配时需要回溯,这使得最坏情况的复杂性呈指数级增长。但我不明白为什么反向引用引入了回溯的需要。有人可以解释为什么,也许可以提供一个例子(正则表达式和输入)?

0 投票
1 回答
1146 浏览

javascript - JavaScript 正则表达式中的反向引用

无论如何要获取反向引用吗?

这只是获取第一个单词之后的每个单词的简单示例。

但是,如果我提醒$1,什么都不会弹出,我不知道为什么。我会很感激任何帮助!

0 投票
1 回答
347 浏览

regex - powershell replace中可能存在错误,还是我做错了?

我正在对一些数据进行正则表达式,如果 $_ 在“替换”部分,我也会得到内容。我为 $replace 尝试了各种方法,但似乎无法阻止这种行为。我也尝试过 [regex]::escape() 但是最终做同样的事情,只是使用转义字符。

我需要能够在替换中容忍 $_ 。我可以把它做成别的东西,然后再做一个修复,但这很丑,我宁愿避免它。

最后,如果 $replace='$anythingelse' 它似乎按预期运行,则只有 $_ 似乎会导致此问题。如果可以禁用所有解析,那也可以。

剧本:

输出:

系统:Windows 7、PSH 2、64 位

那么我做错了什么还是这真的是一个错误?

编辑 6/29:

我做了一个替换,所以我可以做替换。这很愚蠢,应该有一种方法可以禁用解析(这也会让它运行得稍微快一些)。

输出

0 投票
4 回答
2606 浏览

javascript - 正则表达式回参考,我错过了什么?

我正在编写一个微模板脚本,其中部分字符串被替换为对象选项。这是一个简短的例子:

同样在JS Fiddle

第二个表达式工作正常,但不是第一个。有人可以解释为什么吗?我认为$1可以直接用作字符串中的反向引用。

0 投票
3 回答
250 浏览

python - python 正则表达式中括号的奇怪行为

我正在编写一个 python 正则表达式,它通过文本文档查找引用的字符串(从黑盒记录的航空公司飞行员的引用)。我首先尝试使用以下规则编写正则表达式:

返回引号之间的内容。
如果它以单人打开,则仅在以单人关闭时返回。
如果它以双精度打开,则仅在以双精度关闭时返回。

例如,我不想匹配“hi there”或“hi there”,而是“hi there”和“hi there”。

我使用包含以下内容的测试页面:

所以我决定从简单的开始:

这个正则表达式的行为非常出乎意料。
我以为会:

  1. ( " | " ) 匹配单引号或双引号,另存为反向引用 /1。
  2. .*? 匹配非贪心通配符。
  3. \1 匹配它在反向引用 \1 中找到的任何内容(第一步)。

相反,它返回一个引号数组,但从不返回任何其他内容。

我真的很困惑,因为等效的(afaik)正则表达式在 VIM 中工作得很好。

我的问题是:
为什么它只返回括号内的匹配项?这是我对反向引用理解的缺陷吗?如果是这样,为什么它可以在 VIM 中工作?

以及如何编写我在 python 中寻找的正则表达式?

谢谢您的帮助!