正则表达式 - 仅当一个或项匹配时才在前面包含 space
Regex - Include space before only when one OR item is match
有没有办法在 Or 结构的项目之前包含一个 space 仅当与其中之一匹配时?这些项目可以在字符串中重复。
正则表达式:
^([A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)([(e|da|das|de|do|dos)]*[\s][A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)+$
Space 在其中一项之前(必填):[(e|da|das|de|do|dos)]
我想要的结果:
Paulo César Oliveira
(有效)
Antonio Carlos da Silva
(“da”前必须有一个 space)
João da Silva dos Santos e Souza
(在“da”、“dos”和“e”之前必须有一个 space)
你可以使用
^\p{Lu}\p{Ll}+(?:(?:\s(?:e|d(?:[ao]s|[aeo])))?\s\p{Lu}\p{Ll}+)+$
^[A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+(?:(?:\s(?:e|d(?:[ao]s|[aeo])))?\s[A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)+$
参见regex demo。 \p{Lu}
和 \p{Ll}
可能不受您的正则表达式引擎的支持,然后继续使用您的字符 类。
详情:
^
- 字符串开头
\p{Lu}\p{Ll}+
- 一个大写字母后跟一个或多个小写字母
(?:(?:\s(?:e|d(?:[ao]s|[aeo])))?\s\p{Lu}\p{Ll}+)+
- 以下模式出现一次或多次:
(?:\s(?:e|d(?:[ao]s|[aeo])))?
- 可选出现:
\s
- 一个空格
(?:e|d(?:[ao]s|[aeo]))
- e
或 d
后跟 os
/as
或 a
、e
、o
\s
- 一个空格
\p{Lu}\p{Ll}+
- 一个大写字母后跟一个或多个小写字母
$
- 字符串结尾。
有没有办法在 Or 结构的项目之前包含一个 space 仅当与其中之一匹配时?这些项目可以在字符串中重复。
正则表达式:
^([A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)([(e|da|das|de|do|dos)]*[\s][A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)+$
Space 在其中一项之前(必填):[(e|da|das|de|do|dos)]
我想要的结果:
Paulo César Oliveira
(有效)
Antonio Carlos da Silva
(“da”前必须有一个 space)
João da Silva dos Santos e Souza
(在“da”、“dos”和“e”之前必须有一个 space)
你可以使用
^\p{Lu}\p{Ll}+(?:(?:\s(?:e|d(?:[ao]s|[aeo])))?\s\p{Lu}\p{Ll}+)+$
^[A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+(?:(?:\s(?:e|d(?:[ao]s|[aeo])))?\s[A-ZÁÂÉÊÍÓÔÚ][a-záãâéêíóõôúç]+)+$
参见regex demo。 \p{Lu}
和 \p{Ll}
可能不受您的正则表达式引擎的支持,然后继续使用您的字符 类。
详情:
^
- 字符串开头\p{Lu}\p{Ll}+
- 一个大写字母后跟一个或多个小写字母(?:(?:\s(?:e|d(?:[ao]s|[aeo])))?\s\p{Lu}\p{Ll}+)+
- 以下模式出现一次或多次:(?:\s(?:e|d(?:[ao]s|[aeo])))?
- 可选出现:\s
- 一个空格(?:e|d(?:[ao]s|[aeo]))
-e
或d
后跟os
/as
或a
、e
、o
\s
- 一个空格\p{Lu}\p{Ll}+
- 一个大写字母后跟一个或多个小写字母
$
- 字符串结尾。