Python:如何匹配正则表达式中的特殊字符?

时间:2014-11-20 03:08:09

标签: regex python-2.7

我尝试与其中的特殊字符进行正则表达式匹配,例如" /","。"和" - & #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;? 谢谢!

2 个答案:

答案 0 :(得分:0)

是的,一段时间'。'是一个特殊的角色。

用反斜杠逃脱。

http://www.regular-expressions.info/characters.html

答案 1 :(得分:0)

您需要将正则表达式中的(?P<mem>\d.+)更改为(?P<mem>[\d.]+),以便它可以捕获数字或点一次或多次,否则\d.+将匹配数字和以下字符贪婪。由于此+(?P<time>[0-9:.]+) +(?P<proc_name>[\w-/.]+)旁边存在一些其他模式,因此(?P<mem>\d.+)会使正则表达式引擎按顺序回溯以查找匹配项。