Regex 带空格的正则表达式可选

Regex 带空格的正则表达式可选,regex,Regex,我试图构建一个简单的正则表达式来匹配: 呼叫name home或呼叫name mobile 我正在使用: call (.*) (?:home|mobile)? 因为家庭或手机是可选的。问题是(.*)和可选零件之间存在空白。此表达式与“call joe”不匹配,因为它需要最后一个空格。如何修改它以考虑可选空白?您可以使用此正则表达式: ^call +(.+)(?: +(?:home|mobile))?$ i、 e.将主页或手机前的空间也包括在可选部分中。另外,建议使用锚定^和$来避免匹配不需要

我试图构建一个简单的正则表达式来匹配:

呼叫name home或呼叫name mobile

我正在使用:

call (.*) (?:home|mobile)?

因为家庭或手机是可选的。问题是(.*)和可选零件之间存在空白。此表达式与“call joe”不匹配,因为它需要最后一个空格。如何修改它以考虑可选空白?

您可以使用此正则表达式:

^call +(.+)(?: +(?:home|mobile))?$

i、 e.将
主页
手机
前的空间也包括在可选部分中。另外,建议使用锚定
^
$
来避免匹配不需要的文本。

正则表达式允许您通过修饰符告诉它要查找多少字符。大多数人都熟悉
*
意思是
0或更多
;似乎您正在查找
,这意味着
0或1
,与
{0,1}
相同

call (.*) ?(?:home|mobile)?

您已经在最后应用了它,您只想将它应用到空间。

谢谢您的回复。如果我用您的表达式替换空白,则会匹配“call joe home1”这样的语句;(中间部分,即名称是否也可以包含空格,如
呼叫Bob Smith home
?是的,它也可以包含空格,然后它也将匹配
joe home1
,因为这可能是一个有效的名称,也可能是完全正确的,根据您的要求。允许使用尾随垃圾并不困难,但您在哪里绘制行?是“大荷马”一个名字,还是一个带有“家”和尾随垃圾的名字?
在字符或修饰符后使其成为选项,与
{0,1}
相同。所以,
调用(.*)(?:home | mobile)
问题不清楚,请提供有效和无效的示例输入,并指定确切的要求。好的,这是不同类型的问题,只需要继续学习正则表达式。将
$
添加到末尾。