2012-01-16 63 views
2

我有输入字符串正则表达式来选择子

DISPLAY_MSG='Kumar + sajdhjhasd - Type' 
       and ID=156090 
       and RESOURCE_KEY='Ascend.ElementMaster.kumar_type.desc' 
       and LOCALE='en_US' 

我只想DISPLAY_MSG='Kumar + sajdhjhasd - Type'但使用这种表达

DISPLAY_MSG='[\\w\\W\\s\\S]* 

匹配整个字符串匹配。我怎样才能在这两个单一的代码之间只选择字符串

DISPLAY_MSG= 

回答

2

您应该使用ungreedy量词。试试这个:

DISPLAY_MSG='[\\w\\W\\s\\S]*?' 
+0

谢谢,您的解决方案正在工作......但我对我的表达做了小改动以包含并从DSIPLAY_MSG替换为下一个,并且(可以发生一次或多次)DISPLAY_MSG ='[\\ w \\ W \\小号\\ S] *?“[\\秒] *和{0,1}。但它不匹配。可能是什么情况? – Pokuri 2012-01-16 09:14:47

3

这个正则表达式是很无意义的。

[\w\W\s\S]表示:匹配一个字符,如果它是字母数字或非字母数字或空白或非空白字符。完全相同的结果可以通过(?s).来实现。

只有在JavaScript中(其中(?s)选项,允许点匹配换行符不可用,它使用懒惰量词有意义写[\s\S]代替,但[\w\W\s\S]绝对是大材小用。

所以,更好的解决方案将

DISPLAY_MSG='(?s).*?' 

但更妙的是实际指定哪些是允许的引号之间,这通常是什么报价:

DISPLAY_MSG='[^']*'