python - 子匹配的位置

标签 python regex

让我们考虑以下代码。

import re

text = "def oneFunc(x, y): return 0"

pattern = re.compile(
    r"(?P<DEF_FUNC>def (?P<NAME_FUNC>\w+)\s*\((.*?)\):)|(?P<OTHERS>\w+)"
)

print('---', text, sep = "\n")

for m in pattern.finditer(text):
    mdict = m.groupdict()

    print('---', (m.start(), m.end()), sep = "\n")

    for name, textfound in mdict.items():
        if textfound != None:
            print((name, textfound))

这给出了以下输出。

---
def oneFunc(x, y): return 0
---
(0, 18)
('NAME_FUNC', 'oneFunc')
('DEF_FUNC', 'def oneFunc(x, y):')
---
(19, 25)
('OTHERS', 'return')
---
(26, 27)
('OTHERS', '0')

是否可以直接询问子匹配的re位置?例如,我想知道 'oneFunc' 从 4 开始到 11 结束,但我只有当前最大匹配的位置。

最佳答案

http://docs.python.org/3/library/re.html#re.match.start

因此,m.start('NAME_FUNC') 将返回 4 等(当然对于 m.end(…) 也是如此)。

关于python - 子匹配的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352050/

相关文章:

python - 从 Python 中的字符串中提取字段和值

java - 关于Java中的正则表达式(很简单,但我不知道为什么它不起作用

python - 正则表达式匹配一些子字符串,同时忽略看似相同的子字符串?

python - 使用正则表达式从字符串中提取文本

python - 调用函数数组

python - 如何在Python中重构四个缩进级别?

javascript - 从另一个字符串中提取两个特定字符之间的字符串

python - 运行 pip list -o 时出现 key 环警告

python - 如何通过 SOAPPy (python) 或 SUDS 发送嵌套的 SOAP 请求

Python:使用 urllib2 登录 Moodle