2017-02-27 146 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