问题标签 [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.
php - 如何创建用于替换的正则表达式组?
我有这个示例字符串:
我想删除所有价格,即:
我有这个表达式应该匹配 3 个组:
但显然它不起作用。
如果我一次更换一个组,它会起作用。但是,我想知道是否可以用单个语句替换所有可能的匹配组。
尝试preg_match_all($pattern, $snippet, $matches);
根据上述模式显示匹配项,但如果我将所有 3 个组放在一起,则找不到匹配项。
regex - 带有 () 问题的正则表达式
我有一个正则表达式
这有 3 个以逗号分隔的部分。
当我尝试将其与类似的东西相匹配时
它与正则表达式不匹配。
但是当我尝试匹配时
它完美匹配。
正则表达式有什么问题?
php - preg_replace 如何仅替换选择器内匹配的 xxx($1)yyy 模式
我正在尝试使用正则表达式仅擦除字符串的匹配部分。我正在使用该preg_replace
函数,并尝试通过在匹配部分周围放置括号来删除匹配的文本。例子:
这会用 '' 替换整个字符串。我只想擦除 text2,但保持 text1 和 text3 不变。如何匹配和替换匹配的字符串部分?
c# - C#:将正则表达式字符串与组进行比较
我有这个字符串:{test1}-{test2}/{x+y}
我想检查是否{test1}{test}
匹配该字符串。
如果我可以忽略之间的字符,它会匹配}...{
你会怎么写那个正则表达式?
更新:
我想检查是否{test1}{test2}{x+y}
匹配字符串:
{test1}-{test2}/{x+y}
c# - 正则表达式 c# 可选组 - 应该贪婪吗?
有正则表达式〜像这样:
如果我找到一个 url,我想捕获一个……找到了东西,但我没有得到链接(捕获总是空的)。现在,如果我像这样删除最后的问号
这只会匹配最后有链接的东西......现在是凌晨 2.40......我不知道......
- 编辑 -
样本输入:
blablabla asd 1234t535 <a href="http://google.com" target="_blank">
预期输出:
match 0:
我只想要“http://google.com”或“”
regex - 正则表达式替换组(java、python、perl、awk)
我正在寻找一种基于带有分组的正则表达式进行替换的方法,但这只会替换该组。例如,如果我有:
我想这样称呼:
并获得:
非常欢迎使用 java、perl、python 和 awk 中的任何“短”解决方案!到目前为止,我能够使用 index_of 等来实现这一点,但我希望那里有某种单线:)
regex - 正则表达式匹配 C++ 注释左侧的字符串
我正在寻找一种模式来提取 C++ 注释左侧的字符串和注释本身。问题是,左侧也可以包含一个斜杠。
例子:
"abc/def//comment"
因此,我希望有 2 个组,其中包含评论的左侧和评论本身:
- abc/def
- //评论
有什么建议么?
java - 重叠组捕获
请看下面的代码:
上述程序的输出是:a < b, c > d
但我其实很期待a < b, b > c, c > d
。
我的正则表达式有什么问题吗?
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 正则表达式方言写这个。
c# - 正则表达式简化 - 组太多
我正在为 C 样式预处理器编写一个简单的文本抓取器。输入文本(示例):
我想捕获每个#if [!] defined
语句之后的文本。我需要从上述文本中得到的输出是:
此处需要捕获的行号是 3、5 和 7。请注意,第 7 行有空格和制表符。
我试图创建可以给我这个结果的表达式,但没有一个如此出色。我给出预期结果的表达是-
(?<=(?<=(?<=(?<=(?<=(?<=#if)[\s\t]+)!?)[\s\t]*)defined)[\s\t]+).*
使用的选项是:Multiline + IgnoreCase
但我确信这并不优雅和简洁。有人可以建议更好的表达方式吗?
PS - 我正在使用Expresso来测试表达式。