有一句话:
Ala ma kota i psa.
我们可以看到整个句子在一行中,但如果我们把它放在小div中,它就会改变。
在波兰语中,我们有单字母词,如'i'(和)或'w'(in,with)等。
当留在行尾时,这些单词/字母看起来不太好,所以我们把它们放在下一行:
Ala ma kota
i psa.
而不是:
Ala ma kota i
psa.
问题:
我试图找到所有单个字母,这样我就可以用nobreak空格替换结束空间。这应该够了吧。
答案 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)