如何搜索括号之间的字符并搜索命名的backreference regex python

2024-06-02 05:01:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这条线

          15815 (sh): demand=3000000 boost=1 reason=0 sync=0 need_idle=0 flags=80002 grp=0 best_cpu=6 latency=0

我想使用python regex提取sh和flags值,并命名为backreference,但总是使用None类型的对象,我该怎么做?你知道吗

下面是我尝试的代码:

pattern = re.compile(r"\((?P<thread>.*?)\)*\sflags=(?P<flags>\d+)")


m = pattern.search(str)
 m.group()
'(sh): demand=3000000 boost=1 reason=0 sync=0 need_idle=0 flags=80002'

Tags: shsynccpuneedregexflagspatternbest
1条回答
网友
1楼 · 发布于 2024-06-02 05:01:10

您需要匹配除()之外的任何字符来匹配(...)中的内容,然后使用.*.*?来匹配flags。然后,您只需要使用group("thread")group("flags")来访问这些值:

import re
s ='          15815 (sh): demand=3000000 boost=1 reason=0 sync=0 need_idle=0 flags=80002 grp=0 best_cpu=6 latency=0'
pattern = re.compile(r"\((?P<thread>[^()]*)\).*?\bflags=(?P<flags>\d+)")
m = pattern.search(s)
print(m.group("thread")) # => sh
print(m.group("flags"))  # => 80002

参见Python demo

注意我在flags=之前添加了一个单词边界\b,以匹配flags作为一个完整的单词。你知道吗

相关问题 更多 >