问题标签 [regex-group]

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 投票
3 回答
685 浏览

php - 如何创建用于替换的正则表达式组?

我有这个示例字符串:

我想删除所有价格,即:

我有这个表达式应该匹配 3 个组:

但显然它不起作用。

如果我一次更换一个组,它会起作用。但是,我想知道是否可以用单个语句替换所有可能的匹配组。

尝试preg_match_all($pattern, $snippet, $matches);根据上述模式显示匹配项,但如果我将所有 3 个组放在一起,则找不到匹配项。

0 投票
2 回答
434 浏览

regex - 带有 () 问题的正则表达式

我有一个正则表达式

这有 3 个以逗号分隔的部分。

当我尝试将其与类似的东西相匹配时

它与正则表达式不匹配。

但是当我尝试匹配时

它完美匹配。

正则表达式有什么问题?

0 投票
4 回答
39506 浏览

php - preg_replace 如何仅替换选择器内匹配的 xxx($1)yyy 模式

我正在尝试使用正则表达式仅擦除字符串的匹配部分。我正在使用该preg_replace函数,并尝试通过在匹配部分周围放置括号来删除匹配的文本。例子:

这会用 '' 替换整个字符串。我只想擦除 text2,但保持 text1 和 text3 不变。如何匹配和替换匹配的字符串部分?

0 投票
1 回答
243 浏览

c# - C#:将正则表达式字符串与组进行比较

我有这个字符串:{test1}-{test2}/{x+y}

我想检查是否{test1}{test}匹配该字符串。

如果我可以忽略之间的字符,它会匹配}...{

你会怎么写那个正则表达式?

更新:

我想检查是否{test1}{test2}{x+y}匹配字符串:

{test1}-{test2}/{x+y}

0 投票
3 回答
1059 浏览

c# - 正则表达式 c# 可选组 - 应该贪婪吗?

有正则表达式〜像这样:

如果我找到一个 url,我想捕获一个……找到了东西,但我没有得到链接(捕获总是空的)。现在,如果我像这样删除最后的问号

这只会匹配最后有链接的东西......现在是凌晨 2.40......我不知道......

- 编辑 -

样本输入:

blablabla asd 1234t535 <a href="http://google.com" target="_blank">

预期输出:

match 0:

我只想要“http://google.com”或“”

0 投票
2 回答
1065 浏览

regex - 正则表达式替换组(java、python、perl、awk)

我正在寻找一种基于带有分组的正则表达式进行替换的方法,但这只会替换该组。例如,如果我有:

我想这样称呼:

并获得:

非常欢迎使用 java、perl、python 和 awk 中的任何“短”解决方案!到目前为止,我能够使用 index_of 等来实现这一点,但我希望那里有某种单线:)

0 投票
2 回答
512 浏览

regex - 正则表达式匹配 C++ 注释左侧的字符串

我正在寻找一种模式来提取 C++ 注释左侧的字符串和注释本身。问题是,左侧也可以包含一个斜杠。

例子:

"abc/def//comment"

因此,我希望有 2 个组,其中包含评论的左侧和评论本身:

  1. abc/def
  2. //评论

有什么建议么?

0 投票
3 回答
4269 浏览

java - 重叠组捕获

请看下面的代码:

上述程序的输出是:a < b, c > d

但我其实很期待a < b, b > c, c > d

我的正则表达式有什么问题吗?

0 投票
3 回答
1105 浏览

javascript - 正则表达式:不要在组中包含子字符串

我想知道是否可以在组内排除部分匹配项。

我相信这/(foo((?:bar)|(bad)))/会导致匹配“foobar”或“foobad”以及包含“foobar”或“foobad”的第 1 组。我希望它匹配“foobar”或“foobad”,但第 1 组仅包含“foo”或“foobad”。我知道(?:...)正则表达式语法用于创建一个您以后无法引用的组,但上述用法意味着有 3 个组: \1 整个匹配项;\2 'bar' 或 'bad'; \NONE 是未使用的组 'bar';和 \3 为“坏”。

你知道我要去哪里吗?我想有选择地从另一个组中排除一个子组。

或者,我想以 OR 方式定义组 1 两次,/(foobar)|(foobad)/尽管我知道输入不会做我想要的。在这种情况下,如果将“foobad”作为输入,尝试访问match[1]会导致“未定义”错误。我知道这是因为它实际上将其分为第 1 组和/或第 2 组。

我正在用 javascript 正则表达式方言写这个。

0 投票
4 回答
400 浏览

c# - 正则表达式简化 - 组太多

我正在为 C 样式预处理器编写一个简单的文本抓取器。输入文本(示例):

我想捕获每个#if [!] defined语句之后的文本。我需要从上述文本中得到的输出是:

此处需要捕获的行号是 3、5 和 7。请注意,第 7 行有空格和制表符。

我试图创建可以给我这个结果的表达式,但没有一个如此出色。我给出预期结果的表达是-

(?<=(?<=(?<=(?<=(?<=(?<=#if)[\s\t]+)!?)[\s\t]*)defined)[\s\t]+).*

使用的选项是:Multiline + IgnoreCase

但我确信这并不优雅和简洁。有人可以建议更好的表达方式吗?

PS - 我正在使用Expresso来测试表达式。