具有特殊字符的短语的正则表达式

2024-10-03 19:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个正则表达式,可以找到1到4个单词之间的短语。 第一个单词的第一个字母必须是大写,其他字母可以更低。 这些单词可以包含特殊字符,也可以包含1-3位数字。 这是我的正则表达式,但出于某种原因,它只收集每个单词的前3个字母

文本和正则表达式示例:

Marry Larry
Marry and Larry
Marry and Larry.com
Marry & Larry.com
Marry & Larry
Mary lowercaseword Larry
M.L.S.
M.Larry
M. L. S.
M. Larry's
Marry's and Larry's
Mary Larry's

regex = "((\d{0,3})?[A-Z]('s|'|-|.|.com)?\s?(&|[a-z])?\s?){1,3}"

found = re.search(regex, text)

Tags: and文本com示例字母数字单词regex
1条回答
网友
1楼 · 发布于 2024-10-03 19:20:42

试试这个正则表达式:\d{0,3}[A-Z][A-Za-z.\-&$']*( +[A-Za-z.\-&$']+){0,3}(?:\n|$)

首先,\d{0,3}检查短语是否以0到3的数字开头

接下来,[A-Z][A-Za-z.\-&$']*首先匹配需要大写字母的第一个单词

接下来,( +[A-Za-z.\-&$']+){0,3}匹配一个空格,然后匹配一系列字符,形成一个最多出现3次的单词(总共4个单词)

最后,(?:\n|$)匹配换行符或字符串的结尾,而不将其包含在结果中

如果需要不同的特殊字符,只需将它们添加到两个[]中,如下所示:[A-Za-z“此处需要的特殊字符,不带引号”]

请注意,“-”字符需要转义,因此请改为写“\-”

请检查此网站以确认:regexr.com/61f8c

相关问题 更多 >