0

我有一个字符串

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")

任何人都可以帮助我吗?

非常感谢

4

1 回答 1

5

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

res = re.search( r"(?P<say>say(team)?): (?P<id>\d+) (?P<name>[\w|*]+): (?P<text>.*)",x)
于 2012-10-17T17:58:55.490 回答