我有一个字符串
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")
任何人都可以帮助我?
非常感谢
答案 0 :(得分:5)
根据您添加“|”的位置,看起来您期望“|”和“{”匹配\w
,但\w
只匹配字母,数字和“_”。要匹配这些字符,请将\w
更改为[\w|*]
:
res = re.search( r"(?P<say>say(team)?): (?P<id>\d+) (?P<name>[\w|*]+): (?P<text>.*)",x)