我試圖用正則表達式解析下面的句子(JavaScript)的多個工作:正則表達式允許在一個句子
- 祝電視
- 我想要一些巧克力
- 我需要火
目前我正在嘗試:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
但它不起作用。我也用\w
做了一些測試,但沒有運氣。
我想允許任何字(最多5個字)之間的「我」和最後一個字witch是預定義的。
我試圖用正則表達式解析下面的句子(JavaScript)的多個工作:正則表達式允許在一個句子
目前我正在嘗試:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
但它不起作用。我也用\w
做了一些測試,但沒有運氣。
我想允許任何字(最多5個字)之間的「我」和最後一個字witch是預定義的。
要考慮非字字符在中間的話,你可以使用
/I(?:\W+\w+){0,5}\W+(?:TV|chocolate|fire)/
的要點在於你在「單詞」之間添加了單詞邊界,但沒有考慮空格,標點符號等(所有其他非單詞字符)。
圖案的詳細資料:
I
- 左定界符(?:\W+\w+){0,5}\W+
匹配 - 1+非字字符(\W+
)和匹配的0至5的序列(由於limiting quantifier {n,m}
)1+後面的字符(\w+
)和末尾的\W+
與必須存在的一個或多個非字詞字符相匹配,以便將最後匹配的字符從...(?:TV|chocolate|fire)
- 匹配的結尾分隔符它會[匹配'我想要一些巧克力'](https:// regex101。com/r/yE9dD3/1) –
有了這個表達式,你可以忽略所提到的'I([] * \ b [a-zA-Z] * \ b){0,5}(TV |巧克力|火)' –
如果你不關心空格,請使用:
/I(\s[a-zA-Z]*\s?){0,5}(TV|chocolate|fire)/
這不會解釋單詞與標點符號分開的情況,這就是爲什麼我建議使用'\ S' /'\ s'。 –
嘗試
/I\s+(?:\w+\s+){0,5}(TV|chocolate|fire)/
(Test here)基於
Stefan Kert版本,但是依靠每個額外單詞的右側空格而不是wo第三界限。
它還接受任何有效的「單詞」(\ w)任何長度和任何有效間距字符(不關心重複)的字符單詞。
(*或*,使用'\ s'總是優先於*空格*) –
有時,字面空間是指。順便說一句,這裏是一個類似的正則表達式:['/I(?:\W+\w+){0,5}\W+(?:TV|chocolate|fire)/'](https://regex101.com/r/ iE5nA7/1),它確保在字符塊之間存在非字詞字符。 –
\ W + \ w +的版本就是我要找的!謝謝 ! :) – jaumard