2017-09-26 137 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