如何搜索括号之间的字符并搜索命名的反向引用正则表达式 python
how to search characters between parentheses and search for a named backreference regex python
我有这条线
15815 (sh): demand=3000000 boost=1 reason=0 sync=0 need_idle=0 flags=80002 grp=0 best_cpu=6 latency=0
我想使用 python 正则表达式提取具有命名反向引用的 sh 和标志值,但总是以 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'
您需要匹配 (
和 )
以外的任何字符来匹配 (...)
中的内容,然后使用 .*
或 .*?
来匹配直到 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
注意我在 flags=
之前添加了一个单词边界 \b
以匹配 flags
作为一个完整的单词。
我有这条线
15815 (sh): demand=3000000 boost=1 reason=0 sync=0 need_idle=0 flags=80002 grp=0 best_cpu=6 latency=0
我想使用 python 正则表达式提取具有命名反向引用的 sh 和标志值,但总是以 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'
您需要匹配 (
和 )
以外的任何字符来匹配 (...)
中的内容,然后使用 .*
或 .*?
来匹配直到 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
注意我在 flags=
之前添加了一个单词边界 \b
以匹配 flags
作为一个完整的单词。