我希望在分词之前保留单词内部的连字符。这个策略包括用一个唯一的字符替换连字符,然后在分词后再将该唯一字符替换为连字符。注意:最终我将使用Unicode类
问题:当一个单词包含多个内部连字符分隔一个单字符时,它会失败。
示例和期望结果:
Pd
来捕获所有形式的破折号字符,但在这里我保持简单,因为我认为这部分与问题无关。问题:当一个单词包含多个内部连字符分隔一个单字符时,它会失败。
示例和期望结果:
replaceDash <- function(x) gsub("(\\w)-(\\w)", "\\1§\\2", x)
# these are all OK
replaceDash("Hawaii-Five-O")
## [1] "Hawaii§Five§O"
replaceDash("jack-of-all-trades")
## [1] "jack§of§all§trades"
replaceDash("A-bomb")
## [1] "A§bomb"
replaceDash("freakin-A")
## [1] "freakin§A"
# not the desired outcome
replaceDash("jack-o-lantern") # FAILS - should be "jack§o§lantern"
## [1] "jack§o-lantern"
replaceDash("Whack-a-Mole") # FAILS - should be "Whack§a§Mole"
## [1] "Whack§a-Mole"
gsub()
的第一和第二个表达式需要哪些正则表达式模式?
gsub("(\\b)-(\\b)", "\\1§\\2", "jack-o-lantern")
是什么意思? - lukeAgsub("(?<=\\w)-(?=\\w)", "§", "jack-o-lantern",perl=T)
是什么意思? - NicEgsub("(\\w)-(?=\\w)", "\\1§", "jack-o-lantern", perl=T)
。顺便说一句,不需要使用lookbehind,因为它是一个相当昂贵的子模式。请参见IDEONE演示。 - Wiktor Stribiżew