如何匹配除前导和尾随空格之外的带引号的文本?

时间:2009-01-14 14:24:58

标签: regex

即。

的比赛
 He said, "For my part, it was Greek to me. "

应该是

For my part, it was Greek to me.

没有尾随空格。 我试过了

\"\s*([^\"]*)\s*\"

但它始终匹配组中的尾随空格。

3 个答案:

答案 0 :(得分:2)

尝试:

\"\s*([^\"]*?)\s*\"

但要小心,这个版本取决于结束引号(因为它是懒惰的)。在这里添加惰性运算符时,它会抓取尽可能最小的字符串。如果没有结束引号,则此正则表达式将失败

如果您确定没有空字符串,可以使用:

\"\s*([^\"]*[^\"\s])\s*\"

这个版本的主要问题是你现在正在推动至少一个角色。

老实说,看着它两次,我会使用第一种模式。您正在寻找收盘报价而不是任何报价。它可以100%的时间满足您当前的需求。

答案 1 :(得分:1)

之后使用简单的字符串函数修剪空白会不会更容易?这也会简化正则表达式。

答案 2 :(得分:0)

如果强制它使最终字符为非白色空格怎么办?像这样:

\"\s*([^\"]*[^\s])\s*\"