2017-09-26 136 views
1

全部用相同的模式開頭的單詞我有這樣的單詞列表:匹配除了以下劃線

raceasian_00 
racenonhisp 
raceblackpy_5 
racewhite_00 
racetotalpop 

我想preg_match()只與race開頭,但做包含下劃線的字。

這種模式選擇那些有下劃線的所有單詞:

(race).+?(?=_).+ 

而且我覺得負先行,應以某種方式參與,但我無法弄清楚如何將它添加此沒有工作:

(race).+(?!_).+ 

我錯過了什麼?

回答

1

使用下面的正則表達式:

\brace[^_\s]*\b 
  • \b - 在一個字邊界

  • race斷言位置 - 比賽race在單詞的開頭字面上

  • [^_\s]* - 匹配零或「許多」字符,除了_和d空白\s

https://regex101.com/r/E1yHVY/4

+0

@EatPeanutButter,歡迎。我們需要排除空白,因爲「種族asin」將形成2個單詞,但我們只需要匹配一致的單個單詞 – RomanPerekhrest