相关疑难解决方法(0)

如何在JavaScript Regexp中捕获任意数量的组?

我希望这行JavaScript:

"foo bar baz".match(/^(\s*\w+)+$/)
Run Code Online (Sandbox Code Playgroud)

返回类似的东西:

["foo bar baz", "foo", " bar", " baz"]
Run Code Online (Sandbox Code Playgroud)

但它只返回最后捕获的匹配:

["foo bar baz", " baz"]
Run Code Online (Sandbox Code Playgroud)

有没有办法获得所有捕获的匹配?

javascript regex repeat capturing-group

77
推荐指数
3
解决办法
4万
查看次数

正则表达式:如何访问组的多个匹配项?

我正在整理一个相当复杂的正则表达式.表达式的一部分匹配字符串,例如'+ a',' - 57'等.A +或a - 后跟任意数量的字母或数字.我想匹配匹配此模式的0个或更多字符串.

这是我提出的表达方式:

([\+-][a-zA-Z0-9]+)*
Run Code Online (Sandbox Code Playgroud)

如果我使用这种模式搜索字符串'-56 + a',我希望得到两个匹配:

+ a和-56

但是,我只返回了最后一场比赛:

>>> m = re.match("([\+-][a-zA-Z0-9]+)*", '-56+a')
>>> m.groups()
('+a',)
Run Code Online (Sandbox Code Playgroud)

看看python文档,我看到:

如果一个组匹配多次,则只能访问最后一个匹配:

>>> m = re.match(r"(..)+", "a1b2c3")  # Matches 3 times.
>>> m.group(1)                        # Returns only the last match.
'c3'
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:如何您可以访问多个小组赛?

python regex

63
推荐指数
2
解决办法
7万
查看次数

单个正则表达式的多个组匹配

我正在使用python解析日志,需要从中快速获取一些值

这是简单的等效正则表达式和用法示例

pat = re.compile("(1(2[3456]+2)+1)*")
Run Code Online (Sandbox Code Playgroud)

它没有按预期工作,只有pat.match()返回最后一个匹配组.groups()

这类问题最简单的解决方案是什么?

更新(因为维基引擎说使用编辑而不是创建新帖子):

当然,我需要重复比赛.

to_match="1232112542254211232112322421"
Run Code Online (Sandbox Code Playgroud)

正则表达式需要递归地应用两次.我能忍受,但有什么选择吗?

python regex

5
推荐指数
1
解决办法
1156
查看次数

正则表达式匹配捕获组一次或多次

我正在尝试匹配字符串中的一对数字并将其捕获成组,但我似乎只能捕获最后一组.

Regex:
(\d\d){1,3}
Run Code Online (Sandbox Code Playgroud)

输入字符串:123456 789101

比赛1:123456
第1组:56

第2场比赛:789101
第1组:01

我要的是捕捉到所有的组是这样的:第1场:123456
1组:12
组2:34
组3:56

*更新
看起来Python不允许你捕获多个组,例如在.NET中你可以在一次传递中捕获所有组,因此re.findall('\ d\d','123456')完成这项工作.

python regex

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

regex ×4

python ×3

capturing-group ×1

javascript ×1

repeat ×1