对此进行测试 http://tools.netshiftmedia.com/regexlibrary/
好吧,我想匹配下面的句子:
或
常规模式:
first ((no )?((lo)|(no)|(la)|(te)|(me)))? last
它无法比拟
first last
如何才能与之匹配
first last
答案 0 :(得分:3)
在正则表达式的某处添加一个可选空格,例如:
first ((no )?(((lo)|(no)|(la)|(te)|(me)) ))?last
你的正则表达式需要两个空格 - 在可选的中央正则表达式的每一端都有一个空格。
这个正则表达式将“last”的前导空格移动到“lo | no | la ...”正则表达式的尾随空格,使其具有与可选“no”类似的效果。
答案 1 :(得分:1)
您的正则表达式包含两个空格。
删除其中一个。
first((no )?((lo)|(no)|(la)|(te)|(me)))? last
或
first ((no )?((lo)|(no)|(la)|(te)|(me)))?last
答案 2 :(得分:0)
您当前的正则表达式中有两个空格。使第二个空格可选。
答案 3 :(得分:0)
你的正则表达式有太多空格......
first ((no )?((lo)|(no)|(la)|(te)|(me)))? last
如果我们删除中间位,我们得到
first last
首先注意空格,以及最后一个空格。删除其中一个空格,它将起作用。
答案 4 :(得分:0)
如果有no
,您只需要额外的空间,因此请将其作为群组的一部分:
first ((no )?((lo)|(no)|(la)|(te)|(me) ))?last
无论你使用空格做什么,都要保持一致并小心他们进入的群体。要么立即将它们放在他们所属的词之后,要么立即放在他们之前。这应该是等效的,但是将空格放在单词之前而不是之后:
first(( no)?( (lo)|(no)|(la)|(te)|(me)))? last
您可能需要考虑将\s
字符类与+
结合使用,以便更灵活地使用空格。
答案 5 :(得分:0)
尝试这可能会有所帮助。我根据你提供的链接做了这个,所以在真实场景中可能是错误的。
这也不匹配(如果你不想要)首先不是最后一个
first ((no )?((lo)|(no)|(la)|(te)|(me))? )?last$