我尝试与其中的特殊字符进行正则表达式匹配,例如" /","。"和" - & #34 ;. 这是字符串:
17440 root 20 0 3645m 452m 12m S 152 11.8 347:32.04 test/1/02.3_4-6
但是下面的代码似乎与最终匹配:
m=re.search(r"(?P<pid>\d+) +(?P<user>\w+) +(?P<pr>[\w-]+) +(?P<ni>[\w-]+) +(?P<virt>\w+) +(?P<res>\w+) +(?P<shr>\w+) +(?P<st>\w) +(?P<cpu>\d+) +(?P<mem>\d.+) +(?P<time>[0-9:.]+) +(?P<proc_name>[\w-/.]+)", line)
我是否需要在特殊字符之前使用反斜杠,例如&#34; /&#34;和&#34;。&#34;? 谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
您需要将正则表达式中的(?P<mem>\d.+)
更改为(?P<mem>[\d.]+)
,以便它可以捕获数字或点一次或多次,否则\d.+
将匹配数字和以下字符贪婪。由于此+(?P<time>[0-9:.]+) +(?P<proc_name>[\w-/.]+)
旁边存在一些其他模式,因此(?P<mem>\d.+)
会使正则表达式引擎按顺序回溯以查找匹配项。