Regex-仅当一个OR项匹配时才在前面包含空格



是否有一种方法可以仅在与Or结构的某个项匹配时才在该项之前包含空格?这些项目可以在字符串中重复。

正则表达式:

^([A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)([(e|da|das|de|do|dos)]*[s][A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)+$

其中一项之前的空格(必填(:[(e|da|das|de|do|dos)]

我想要的结果:

Paulo César Oliveira(这是有效的(
Antonio Carlos da Silva(在"da"之前必须有一个空格(
João da Silva dos Santos e Souza

您可以使用

^p{Lu}p{Ll}+(?:(?:s(?:e|d(?:[ao]s|[aeo])))?sp{Lu}p{Ll}+)+$
^[A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+(?:(?:s(?:e|d(?:[ao]s|[aeo])))?s[A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)+$

请参阅regex演示。正则表达式引擎可能不支持p{Lu}p{Ll},请继续使用您的字符类。

详细信息

  • ^-字符串的开头
  • p{Lu}p{Ll}+-后面跟着一个或多个小写字母的大写字母
  • (?:(?:s(?:e|d(?:[ao]s|[aeo])))?sp{Lu}p{Ll}+)+-出现一次或多次以下模式:
    • (?:s(?:e|d(?:[ao]s|[aeo])))?-可选出现:
      • s-a空白
      • (?:e|d(?:[ao]s|[aeo]))-ed,然后是os/asaeo
    • s-a空白
    • p{Lu}p{Ll}+-后面跟着一个或多个小写字母的大写字母
  • $—字符串结束

相关内容

最新更新