【问题标题】:Regex for phrase that has special chars具有特殊字符的短语的正则表达式
【发布时间】:2021-09-18 07:05:58
【问题描述】:

我想制作能够找到 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)

【问题讨论】:

  • 但是and 不以大写字母开头,并且没有一个示例有 3 位数字。 .com 的规则是什么?

标签: python regex


【解决方案1】:

试试这个正则表达式:\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

【讨论】:

  • 你能告诉我如何排除 :, ; ?和 !从这个正则表达式?我想找到可以有特殊字符的短语,但不是 :, ; ?
  • 抱歉,'-' 字符需要转义。我已经更新了答案。
猜你喜欢
  • 2021-12-05
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多