我有输入字符串
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=
答案 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]*?'