正则表达式不是字符串之前的逗号和空格

时间:2016-04-26 16:32:21

标签: regex

我试图获得一个特定的单词,但不是如果字符串' '在它之前。我试过了

((?!\,\s))(word)

然而,那不起作用。我希望它能匹配单词'。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您已将提前编码为负面。尝试使用背后的




 (?<!,\ s)word
  




另请注意,您不需要编码的大部分括号。




答案 1 :(得分:0)

我同意答案是一种看法背后的断言 区别在于放在哪里。

以断言开头的任何正则表达式都会变慢 原因是断言不能被优化到插入点。

出于这个原因,它可能看起来很大,但它在性能上有所不同 从5到20次。

示例

word asdfasdf  afsdbbasbfasfb 
adbbadfb, afdsbafbdsasfb adb, , , ,
word, word word, word 

基准

Regex1:   (?<!,\s)word
Options:  < none >
Completed iterations:   50  /  50     ( x 1000 )
Matches found per iteration:   3
Elapsed Time:    0.70 s,   703.28 ms,   703277 µs


Regex2:   word(?<!,\sword)
Options:  < none >
Completed iterations:   50  /  50     ( x 1000 )
Matches found per iteration:   3
Elapsed Time:    0.17 s,   170.21 ms,   170207 µs