我正在尝试分割以下文本:
§1Hello§fman, §0this §8is §2a §blittle §dtest :)
通过定界符“§[a-z | A-Z 我的第一种方法是:
^[§]{1}[a-fA-F]|[0-9]$
但是pythex.org使用此正则表达式不会在我的示例文本中找到任何匹配项。
你知道为什么吗?
答案 0 :(得分:1)
^[§]{1}[a-fA-F]|[0-9]$
模式匹配以§
开头,然后有a-f
和A-F
范围内的字母或字符串末尾的数字的字符串。
请注意,^
匹配字符串的开头,$
匹配字符串位置的结尾。
要提取§
之后的那些单词,然后提取十六进制字符,则可以使用
re.findall(r'§[A-Fa-z0-9]([^\W\d_]+)', s)
# => ['Hello', 'man', 'this', 'is', 'a', 'little', 'test']
要删除它们,可以使用re.sub
:
re.sub(r'\s*§[A-Fa-z0-9]', ' ', s).strip()
# => Hello man, this is a little test :)
要获取这些定界符的字符串,您可以使用
"".join(re.findall(r'§[A-Za-z0-9]', s))
# => §1§f§0§8§2§b§d
请参见this Python demo。
详细信息
§
-一个§
符号[A-Fa-z0-9]
-a-f
和A-F
范围内的1位数字或ASCII字母(十六进制字符)([^\W\d_]+)
-第1组(此值将由re.findall
提取):一个或多个字母(包括数字,请删除\d
)答案 1 :(得分:1)