具有特殊字符的短语的Regex



我想制作一个正则表达式,它可以查找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)

尝试此正则表达式: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

最新更新