2010-10-07 32 views
1

我正在学习正则表达式(http://www.regular-expressions.info/),并试图找出如何匹配以下字符串中不包含的部分:一个包含q的字未被跟随u正则表达式得到不匹配模式的字符串部分

我已经得到了这么多,但无法弄清楚如何正确地反转它。这个正则表达式能够成功找到这个单词。现在,我只需要弄清楚如何使它找到除字之外的字符串的其余部分。建议?

(\w*(q(?!u))\w*) 

JAZzY 23 
JACKY 21 JIFFY 21 JUNKY 21 QUAKY 21 ZAPPY 21 ZAXES 21 ZINKY 21 ZIPPY 21 
FURZY 20 HAFIZ 20 QUACK 20 QUAFF 20 QUICK 20 QUIFF 20 WOOZY 20 
BOOZY 19 COZEY 19 CRAZY 19 ENZYM 19 FUZzY 19 HAMZA 19 JAMMY 19 JEMMY 19 JERKY 19 JIMMY 19 JIMPY 19 JOKEY 19 JUMPY 19 KUDZU 19 KYLIX 19 QOPHS 19 WHIZz 19 ZILCH 19 ZINCY 19 ZYMES 19 
+0

这不就是刚才打电话_'getting与nothing'_替换匹配的单词一个新的字符串?即一个正常的替换。如果你告诉我们你试图用什么语言,这个人可能会提供一个解决方案,如果它纯粹是学术性的:匹配任何东西不是一个模式对于正则表达式来说是不可行的,尽管你可以用自己的工作来解决(或多或少)有时候工作在前面和后面。 – Wrikken 2010-10-07 23:10:57

回答

1

你需要指定一个语言(JavaScript的,PHP等)。

下面是做到这一点的JS的一种方法:(See it in action at jsfiddle

var Str = 'JAZzY 23 ' 
     + 'JACKY 21 JIFFY 21 JUNKY 21 QUAKY 21 ZAPPY 21 ZAXES 21 ZINKY 21 ' 
     + 'ZIPPY 21 FURZY 20 HAFIZ 20 QUACK 20 QUAFF 20 QUICK 20 QUIFF 20 ' 
     + 'WOOZY 20 BOOZY 19 COZEY 19 CRAZY 19 ENZYM 19 FUZzY 19 HAMZA 19 ' 
     + 'JAMMY 19 JEMMY 19 JERKY 19 JIMMY 19 JIMPY 19 JOKEY 19 JUMPY 19 ' 
     + 'KUDZU 19 KYLIX 19 QOPHS 19 WHIZz 19 ZILCH 19 ZINCY 19 ZYMES 19 ' 
     + 'risque 69 risqay 86 Qu 19 Qa 33' 
     ; 

var Filtered = Str.replace (/\b\w*q(?!u)\w*\b/ig, ""); 
alert (Filtered);