Java正则词边界
我想创建正则表达式,它将用空格和破折号匹配第二个名称,如:Java正则词边界,java,regex,Java,Regex,我想创建正则表达式,它将用空格和破折号匹配第二个名称,如: Smith-Wright Smith Smith Wright 但是,如果您要输入just-or-whitespace,则它不应该起作用。目前,我有一个类似于^[a-zA-Z\s\-]+$的正则表达式,但它只监视带-和空格的单词。如何创建只与“我的分隔符”匹配的正则表达式?您可以将此正则表达式用于要匹配的名称 ^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$ 说明: ^-字符串的开头 [a-zA-Z]+匹配由一个或多个字
Smith-Wright
Smith
Smith Wright
但是,如果您要输入just-or-whitespace,则它不应该起作用。目前,我有一个类似于
^[a-zA-Z\s\-]+$
的正则表达式,但它只监视带-和空格的单词。如何创建只与“我的分隔符”匹配的正则表达式?您可以将此正则表达式用于要匹配的名称
^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$
说明:
-字符串的开头^
匹配由一个或多个字母组成的名称[a-zA-Z]+
-另外,如果名称部分是空格或连字符分隔的,则匹配更多名称部分(?:[-][a-zA-Z]+)*
-字符串结尾$
如果我正确理解了您的帖子,您希望匹配:
- “史密斯·赖特”
- “史密斯”
- “史密斯·赖特”
- “——”
- “”
- “-赖特”
- “赖特”
^[a-zA-Z]+([ -][a-zA-Z]+)*$
您可以将分隔符放置在
[-]
的位置 但不仅仅是“史密斯”。我应该添加什么来匹配此项?如果您只想匹配Smith
,只需将最后一个+
更改为*
,这将使后面的部分为零或更多,因此是可选的