📅  最后修改于: 2023-12-03 15:22:28.146000             🧑  作者: Mango
在处理文本数据时,通常需要对文本进行分隔。在某些情况下,您需要使用多个分隔符来将文本分解为单词或短语。正则表达式是处理这类文本数据的有效工具之一。本文介绍使用正则表达式处理多个分隔符的方法。
以下代码演示如何使用正则表达式按照单词分隔一个字符串,并将它们作为列表返回:
import re
text = "Hello, world! How are you today?"
words = re.findall(r'\b\w+\b', text)
print(words)
# 输出: ['Hello', 'world', 'How', 'are', 'you', 'today']
表达式\b\w+\b
匹配从头到尾的单词,其中\b
是一个单词的边界,\w+
匹配任何字母数字(至少一个)。
如果您需要将字符串按照多个分隔符分隔,可以将它们组合成一个包含在方括号内的字符集。以下代码演示如何按照多个分隔符分隔一个字符串,并将结果作为列表返回:
import re
text = "apple,orange;banana|pear"
words = re.findall(r'\b\w+\b|[,\.;\|]', text)
print(words)
# 输出: ['apple', ',', 'orange', ';', 'banana', '|', 'pear']
表达式\b\w+\b|[,\.;\|]
匹配单词或分隔符。字符集[,\.;\|]
包含逗号、分号、点和竖线,其中每个字符都被转义并使用等效字符\,
、\.
、\;
和\|
表示。字符集中的竖线|
表明它是分隔符的一部分,它在字符集的开头,将正则表达式分成两部分,以便匹配单词和分隔符。
在某些情况下,您需要将文本分解为单词,并保留分隔符。以下代码演示如何使用分组和前后式在正则表达式中指定分隔符并保留它们:
import re
text = "apple,orange;banana|pear"
words = re.findall(r'(\b\w+\b)|([,\.;\|])', text)
print(words)
# 输出: [('apple', ''), (',', ''), ('orange', ''), (';', ''), ('banana', ''), ('|', ''), ('pear', '')]
表达式(\b\w+\b)|([,\.;\|])
中使用两个分组。第一个分组\b\w+\b
与以前相同,匹配单词。第二个分组[,\.;\|]
匹配分隔符。正则表达式使用“或者”逻辑将两个分组连接在一起,并使用空字符串''
与不存在的分组匹配。因此,每个匹配都是元组,其中包含一个单词和它的前缀或后缀分隔符。