2013-04-24 139 views
1

我想正则表达式获得每行1个“单词”,而不是1“otherExpression”。正则表达式反斜杠和双引号与例外

样品: 获得与表达每一行 '\“'(一次或多次),而不是表达式 'otherExpression'

otherExpression1 \" 
otherExpression 2 \" 
\" 
word \" 
word 
anything \"word\" here 
before \"word  
something 

结果

\" 
word \" 
anything \"word\" here 
before \"word 

样品2

与goodExpression and not badExpression

badExpression goodExpression 
goodExpression 
this is goodExpression 
this is badExpression 
goodExpression2 
badExpression1 

结果

goodExpression 
this is goodExpression 
goodExpression2 
+0

我不明白。 – 2013-04-24 20:40:06

+0

你在用什么语言? – Bohemian 2013-04-24 21:06:03

+0

其正则表达式,你可以在http://www.rubular.com/r/ycXD9zcRxJ上测试 – forX 2013-04-24 21:08:47

回答

0

你需要一个负前瞻:

^(?!.*otherExpression).*(\\\") 

1组贵匹配\"

你还没说你所使用的语言,但我假设的逃逸双引号是必需的。

+0

需要改变为^(!!。* otherExpression)。*(\\\“) – forX 2013-04-24 21:26:34

+0

@forX你确定只需要匹配literal:'\“',正则表达式:'\\”'只会匹配literal:'\“',因为第三个反斜杠会被忽略 – Aprillion 2013-04-24 22:49:42

+0

@deathApril它取决于正在使用什么语言(未由OP指定)。例如,Java在字符串文字中需要5个反斜杠。 – Bohemian 2013-04-24 23:56:00

0

不是100%确定你想要什么。尝试这个;

/^[^(?:otherExpression)].*$/gm 

比赛;

\" 
word \" 
word 
anything \"word\" here 
before \"word  

或这个;

/^[^(?:otherExpression)].*\"$/gm 

比赛;

\" 
word \" 

或这个;

/^[^(?:otherExpression)].*\\"$/gm 

比赛;

word \" 

最后要真正匹配一个单词,试试这个;

^[^(?:otherExpression)]\w+\s+\\"$ 

比赛;

word \" 
相关问题