查找带空格的单个字母单词

时间:2015-05-26 17:15:24

标签: ruby regex

有一句话:

Ala ma kota i psa.

我们可以看到整个句子在一行中,但如果我们把它放在小div中,它就会改变。

在波兰语中,我们有单字母词,如'i'(和)或'w'(in,with)等。

当留在行尾时,这些单词/字母看起来不太好,所以我们把它们放在下一行:

Ala ma kota 
i psa.

而不是:

Ala ma kota i
psa.

问题:

我试图找到所有单个字母,这样我就可以用nobreak空格替换结束空间。这应该够了吧。

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容匹配最后的所有单个词:

\b[a-zA-Z]$     //or \b\p{L}$

然后你可以应用你的技巧..

请参阅DEMO

编辑:如果您想在最后匹配spaceLetterSpace,请使用以下内容:

\s+[a-zA-Z]\b[^a-zA-Z]*

请参阅DEMO

答案 1 :(得分:2)

从讨论中,听起来线条尚未分割,并且您只想捕获单字母单词“i”,“o”或“w”,并且您希望在之后允许逗号字。我们也允许使用分号,只是为了让它更有趣。

您可能会这样做:

def no_orphan( str )
    str.gsub( /( [iow][,;]?) /, '\1 ' )
end

irb:

中的示例
irb(main):001:0> def no_orphan( str )
irb(main):002:1>     str.gsub( /( [iow][,;]?) /, '\1 ' )
irb(main):003:1> end
=> nil
irb(main):004:0> no_orphan 'Ala ma kota i psa.'
=> "Ala ma kota i psa."
irb(main):005:0> no_orphan 'Ala ma kota i, psa.'
=> "Ala ma kota i, psa."
irb(main):006:0> no_orphan 'Ala ma kota i; psa.'
=> "Ala ma kota i; psa."
irb(main):007:0> no_orphan 'Test Rocky V with space.'
=> "Test Rocky V with space."
irb(main):008:0> 

答案 2 :(得分:0)

\s(\w[,;]?) *\n将匹配一行末尾的单个字母。您可以按"\n"+group(1)

替换它