正则表达式选择子串

时间:2012-01-16 08:06:33

标签: java regex

我有输入字符串

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=

3 个答案:

答案 0 :(得分:3)

这个正则表达式是非常荒谬的。

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

仅在JavaScript中(其中允许点匹配换行符的(?s)选项不可用,因此编写[\s\S]是有意义的。但[\w\W\s\S]肯定是矫枉过正。< / p>

因此,使用延迟量词的更好解决方案是

DISPLAY_MSG='(?s).*?'

但更好的是实际指定引号之间允许的内容,通常是但是引用的内容:

DISPLAY_MSG='[^']*'

答案 1 :(得分:2)

您应该尝试使用非贪婪量词来将匹配减少到尽可能小的长度。

RegEx: Smallest possible match or nongreedy match

以下是一个很好的例子http://www.exampledepot.com/egs/java.util.regex/greedy.html

答案 2 :(得分:2)

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

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