python中的坏字符正则表达式

时间:2012-10-17 17:56:00

标签: python regex

我有一个字符串

1563:37say: 0 kl4|us: !!alias kl4

我需要提取一些信息。我正在尝试使用这个Python代码:

 import re
 x = "1563:37say: 0 kl4us: !!alias kl4"
 res = re.search( r"(?P<say>say(team)?): (?P<id>\d+) (?P<name>\w+): (?P<text>.*)",x)

 slot= res.group("id")
 text = res.group("text")
 say = res.group("say")
 name = res.group("name")

此代码工作正常。为什么我的字符串中有|*这个正则表达式不起作用?

例如:

 import re
 x = "1563:37say: 0 kl4|us: !!alias kl4"
 res = re.search( r"(?P<say>say(team)?): (?P<id>\d+) (?P<name>\w+): (?P<text>.*)",x)

 slot= res.group("id")
 text = res.group("text")
 say = res.group("say")
 name = res.group("name")

任何人都可以帮助我?

非常感谢

1 个答案:

答案 0 :(得分:5)

根据您添加“|”的位置,看起来您期望“|”和“{”匹配\w,但\w只匹配字母,数字和“_”。要匹配这些字符,请将\w更改为[\w|*]

res = re.search( r"(?P<say>say(team)?): (?P<id>\d+) (?P<name>[\w|*]+): (?P<text>.*)",x)