正则表达式中的字符串错误

1 java regex

我有简单的正则表达式

"\".*\""
Run Code Online (Sandbox Code Playgroud)

对我来说,它说选择"和"之间的所有内容,但它也会捕获

"text") != -1 || file.indexOf(".exe"
Run Code Online (Sandbox Code Playgroud)

对我来说,它的两个字符串,正则表达式的一个.我怎么能让正则表达式看到它的两个字符串?

PS我正在使用Java.

Tom*_*lak 12

这是非贪婪的形式:

".*?"
Run Code Online (Sandbox Code Playgroud)

*?意思是:"匹配尽可能少",而*单独的意思是"匹配尽可能多地".

后者基本上一直持续到字符串结束,一个接一个地给予字符,所以最终"可以匹配.这就是为什么你得到字符串中第一个和最后一个引号之间的所有内容.

// for the sake of completeness: Java would need this pattern string
"\".*?\""
Run Code Online (Sandbox Code Playgroud)

  • 实际上,"[^"\ r \n]*"效率更高,做法更好.请参阅我的文章,关于在http://www.regular-expressions.info/dot.html上谨慎使用懒字点. (4认同)

Pau*_*lin 6

正则表达式是"贪婪的".你想要做的是从比赛中间排除引号,比如

"\"[^\"]*\""
Run Code Online (Sandbox Code Playgroud)