【问题标题】:Regex for substring matching with space and substitution用于与空格和替换匹配的子字符串的正则表达式
【发布时间】:2018-09-29 15:56:04
【问题描述】:

我想组合一个字符串中的单词,它们之间有空格,这类似于另一个字符串中的单词,它们之间没有空格(在 R 中)。 例如

s1 = '这里是一个不分字符串的例子'

s2 = '请注意,这是一个未分割的案例,适合你!'

s2需要转换成

s2 = '请注意,这是给你的一个不可分割的案例!'

基于 s1 中的组合词与 s2 中的非组合连续/连续词相同(中间有空格)

我是 R 新手,尝试使用 gsub 和 '\s' 的不同组合,但无法获得所需的结果。

【问题讨论】:

  • 看起来像NLP 问题。与spell check problem相关。

标签: r regex string string-matching


【解决方案1】:

你可以通过

实现你所需要的
  • 从您要搜索的字符串中删除所有空格 (s1)(使用 gsub("\\s+", "", x)),然后
  • 在每个字符之间插入空白模式(\s*)(使用类似sapply(strsplit(unspace(s1), ""), paste, collapse="\\s*")),然后
  • 将所有匹配项替换为gsub(pattern, s1, s2)。

见R demo:

s2 = 'Please note th is is an un di vid ed case right he r e for you!'
s1 = 'this is an undivided case right here'
unspace <- function(x) { gsub("\\s+", "", x) }
pattern <- sapply(strsplit(unspace(s1), ""), paste, collapse="\\s*")
gsub(pattern, s1, s2)
## => [1] "Please note this is an undivided case right here for you!"

【讨论】:

  • 如果要在另一个字符串(有或无空格)中找到完整的连续字符串(无空格),这将正常工作。但是在单个单词(而不是完整的字符串)需要比较的情况下不起作用。更新了问题中的示例,使其更加清晰。
  • 这并不容易,但我会看看我以后能做什么。
猜你喜欢
  • 2019-10-23
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多