2017-02-27 69 views
-3

在处理空间字符时,我无法解析可选的?量词,在(.+)之后,可选文本无法正确解析。捕获正确的组

Examples:用户只能使用这些输入:“什么”,“什么是”,“我想知道/爱知道什么是”。我想出了一个不正确的正则表达式(?:i)?(?:want to know |love to know)?what (.+)(?: is| are)?。在下面的捕获中,我需要所需的示例结果:big housebig houses

  • 正确捕获:

    what big house 
    
  • 错误捕获:

    what big house is 
    
    love to know what big houses are 
    
    i want to know what big house is 
    
+1

'大house'或“大房子”,你为什么要在你的正则表达式中寻找'爱知道'或'想知道'或'是'或'是'? –

+0

你的要求和你写的正则表达式有点不匹配。解释你的正则表达式在做什么。特别是你为什么要检查'想知道|爱知道'并说这不是一场比赛? –

+0

@AbdulHameed在我的正则表达式中,他们得到了错误的分组值:“大房子”和“大房子”就像示例链接一样。 – MiP

回答

1

以下正则表达式应该做的工作:

(?m)(?<=what\s).*?(?=\s(?:is|are|$)) 

看到demo/explanation

如果你想
+0

虽然你的正则表达式与第一个“什么大房子”不匹配。 – MiP

+0

虽然我想要的结果是“大房子”和“大房子”。您的第一个版本无法正确捕获该值。 – MiP

+0

@MiP哦..我的坏,我误解了。现在检查更新的答案。它应该可以正常工作。 – m87

0

您写道:

我需要所期望的结果:大房子和大房子。

然后你后的正则表达式是big house[s]?

+0

我指的是例子中的期望结果。 – MiP