【问题标题】:How to get index of specific group of character in python using regex如何使用正则表达式获取python中特定字符组的索引
【发布时间】:2018-03-30 14:45:40
【问题描述】:

我正在尝试获取特定特殊字符组的所有索引,但我的正则表达式正在返回该组的单个字符的索引,

这是我的代码:-

a=re.finditer(r"[/ \\][\\ /]","/ \\ / \\ / \\ / /")
print([m.start(0) for m in a])

它返回 [0,2,4,6,8,10,12]

但我想要 [0,2,4,6,8,10] ,我只想要“/ \”和“\ /”的索引

【问题讨论】:

标签: regex python-3.x search indexing


【解决方案1】:

您应该删除字符类括号并用捕获组包装每个符号。然后,您可以使用一些逻辑来获取匹配组的索引。

import re
res = []
for m in re.finditer(r"(/) (\\)|(\\) (/)", "/ \\ / \\ / \\"):
    if m.group(1):
        res.extend([m.start(1), m.start(2)])
    else:
        res.extend([m.start(3), m.start(4)])

print(res) # => [0, 2, 4, 6, 8, 10]

请参阅online Python demo

这里,如果第 1 组匹配,这意味着我们需要获取第 1 组和第 2 组的开始索引,否则,我们需要获取第 3 组和第 4 组的开始索引。

【讨论】:

  • 不,它没有返回正确的输出,你可以用字符串“/ \\ / \\ / \\ / /”检查它,它的打印[0,4,8]
  • @AbhishekKumar 它打印[0, 2, 4, 6, 8, 10]
【解决方案2】:

我找到了一个更好的答案,它很短一个班轮

print([m.start(0) for m in re.finditer(r"(?=(/ \\|\\ /))", "/ \\ / \\ / \\ / /")])

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多