R - 如何分割文本和标点符号但有例外?

2024-03-22

在 R 中分析 Facebook 评论进行情感分析。表情符号是在 符号之间的文本编码。

例子:

"Jesus te ama!!! <U+2764>  Ou não...?<U+1F628> (fé em stand by)"

<U+2764> and <U+1F628>是表情符号(沉重的黑色心和恐惧的脸, 分别)。

因此,我需要分割单词/数字和标点符号/符号,表情符号代码除外。 我使用 gsub 函数做到了:

a1  <- "([[:alpha:]])([[:punct:]])"
a2 <- "([[:punct:]])([[:alpha:]])"
b <- "\\1 \\2"
gsub(a1, b, gsub(a2, b, "Jesus te ama!!! <U+2764>  Ou não...?<U+1F628> (fé em stand by)"))

...但是,从逻辑上讲,结果也会影响表情符号代码:

[1] "Jesus te ama !!! < U +2764>  Ou não ...?< U +1F628> ( fé em stand by )"

目标是为 之间的文本创建一个例外,将其在外部拆分并且不在内部拆分 - 即:

[1] "Jesus te ama !!! <U+2764>  Ou não ...? <U+1F628> ( fé em stand by )"

注意:

  1. 有时句子/单词/标点符号和表情符号代码之间不存在空格(需要创建)
  2. 要求 punct 序列保持连接(例如“!!!”、“...?”)

我该怎么做?


您可以使用以下正则表达式解决方案:

a1  <- "(?<=<)U\\+\\w+>(*SKIP)(*F)|(?<=\\S)(?=<U\\+\\w+>)|(?<=[[:alpha:]])(?=[[:punct:]])|(?<=[[:punct:]])(?=[[:alpha:]])"
gsub(a1, " ", "Jesus te ama!!! <U+2764>  Ou não...?<U+1F628> (fé em stand by)", perl=TRUE)
# => [1] "Jesus te ama !!! <U+2764>  Ou não ...? <U+1F628> ( fé em stand by )"

See the 在线 R 演示 http://ideone.com/gw7ptY

这个 PCRE 正则表达式(参见perl=TRUE调用中的参数gsub) 火柴:

  • (?<=<)U\\+\\w+>(*SKIP)(*F) - a U+和 1+ 个单词字符>在 if 之前<- 并且匹配值与 PCRE 动词一起被丢弃(*SKIP)(*F)并从本场比赛结束后寻找下一场比赛
  • | - or
  • (?<=\\S)(?=<U\\+\\w+>)- 非空白字符必须紧邻当前位置的左侧,并且<U+, 1+ 个单词字符和>必须立即出现在当前位置的右侧
  • | - or
  • (?<=[[:alpha:]])(?=[[:punct:]])- 字母必须紧邻当前位置的左侧,标点符号必须紧邻当前位置的右侧
  • | - or
  • (?<=[[:punct:]])(?=[[:alpha:]])- 标点符号必须紧邻当前位置的左侧,并且字母必须紧邻当前位置的右侧
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R - 如何分割文本和标点符号但有例外? 的相关文章

  • laravel 正则表达式验证不起作用

    我刚刚开始使用 laravel 正在努力验证我的表单之一中的文本区域 文本区域用于用户简介 因此我只想允许使用字母 数字 空格和以下字符 这就是我所拥有的 validator Validator make Input all array b
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 仅在具有重复块名称的另一个 Rmarkdown 文档中运行一个 Rmarkdown 文档中的代码

    我正在 Rmarkdown 中编写一系列相互补充的报告 我想将上一份报告的结果纳入我目前正在编写的报告中 我看到其他建议使用的问题purl从 Rmarkdown 文档中提取 R 代码然后运行它 所以我尝试了以下操作 r read previ
  • 在ggplot2中创建部分虚线

    我正在 R 中创建一个图 并且需要创建一条线 其中某些值是投影 投影用虚线表示 这是代码 df data frame date c rep 2008 2013 by 1 value c 303 407 538 696 881 1094 gg
  • R:在 Shiny 中,如何修复应用于“反应性”类对象的“xtable”没有适用的方法

    我收到此错误 Error in UseMethod xtable no applicable method for xtable applied to an object of class reactive UI R library shi
  • 在 R 中修改传单弹出窗口

    我想修改 R 中传单弹出窗口的外观 帮助文件指出 in the popupOptions 函数需要 传递给底层 Javascript 对象构造函数的额外选项 In 这个例子 https rstudio github io leaflet p
  • 替换第二个和第三个下划线之间的任何内容

    我有一个 PowerShell 脚本行 它用 替换 删除 第二个和第三个下划线之间的字符 get childitem pdf rename item newname name replace p L p L 例子 12345 00001 L
  • R中有字典功能吗

    有没有办法在 R 中创建一个 字典 使其具有对 一些效果 x dictionary c Hi Why water c 1 5 4 x Why 5 我问这个是因为我实际上正在寻找两个分类变量函数 所以如果 x dictionary c a b
  • 我可以调整scale_color_brewer的下限吗?

    我已经订购了我想使用 color Brewer 的分类数据 但我很难看到非常低的值 有没有办法去掉这些较低的值或设置范围的下限 ggplot data frame x 1 6 y 10 15 w letters 1 6 aes x y co
  • 如何在 Shiny 中动态渲染的 textInput 添加样式元素

    你好堆栈溢出 在我最近提出的问题中 我已经解决了一些与动态渲染 UI 元素相关的主要问题 并在一些了不起的人的帮助下动态创建了观察者 参见此处 动态渲染的 UI 如何在第二次运行时删除旧的反应变量 https stackoverflow c
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • 正则表达式获取模式的最后一次出现

    我有一个字符串 我需要选择最后一次出现的模式 该字符串是 1302638400000 0 0 1302724800000 0 610 64999999999998 1302811200000 0 2266 6500000000001 130
  • 在 SELECT 中将列值拆分为两列?

    我在 varchar 列中有一个字符串值 它是一个由两部分组成的字符串 在它到达数据库之前分割它不是一个选择 该列的值如下所示 one column part1 part2 part1 part2 所以我想要的是一个如下所示的结果集 col
  • R:如何更改ggvis闪亮应用程序中特定范围的绘图背景颜色

    I have a simple shiny app like below and you can run it The plots are created by ggvis and user can choose student name
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • 替换rmarkdown/knitr/pdf中字幕的自动编号

    我正在使用 Rmarkdown 生成 PDF 文档 我想在其中手动定义图号 下面是一个块的示例 r chunk26 fig cap Fig 5 3 My figure caption plot 1 1 我使用特殊的编号来遵循文档的章节 问题
  • 一次评论多个对象

    假设您有一个变量 a 到 j 的列表 for x in 1 10 assign letters x x 您将如何评论那些最近创建的对象 我尝试过类似的事情 for x in 1 10 comment get letters x lt pas
  • R 在安装包依赖项时不考虑最大版本

    假设我正在开发一个名为magicr做一些统计魔术 我希望它使用另一个名为的包中的函数fairydust 假设 存在于 CRAN 上 很遗憾fairydust刚刚向 CRAN 发布了 2 0 0 版本 完全破坏了我计划使用的功能 所以我更新了

随机推荐

  • NSArray 和 NSMutableArray 的区别

    黑白有什么区别NSArray and NSMutableArray NSMutableArray 以及所有其他类Mutable名称中 可以修改 所以 如果你创建一个普通的NSArray 您以后无法更改其内容 无需重新创建它 但如果你创建一个
  • IdentityServer4 PKCE 错误:“转换后的代码验证程序与代码质询不匹配”

    我无法获得使用 Postman 工作的 IdentityServer4 PKCE 授权 使用在线工具我创建了必要的部分 选择一个随机字符串 1234567890 获取其 SHA 256 哈希值 c775e7b757ede630cd0aa11
  • Safari 中存在块作用域变量的 bug?

    我正在测试是否可以使用块作用域来替换 IIFE 以通过闭包创建 私有 变量 在 Safari 11 0 3 11604 5 6 1 1 中进行测试之前一切进展顺利 该版本支持块作用域 但存在块和闭包的错误 例如 let i 0 functi
  • ConcurrentDictionary 陷阱 - GetOrAdd 和 AddOrUpdate 的委托工厂是否同步?

    的文档ConcurrentDictionary没有明确说明 所以我想我们不能指望代表valueFactory and updateValueFactory让它们的执行同步 分别来自 GetOrAdd 和 AddOrUpdate 操作 所以
  • 在文件中每行的开头和结尾添加字符

    在每行的开头和结尾添加一些字符的最佳方法是什么 可以使用 Vim 或其他方式完成吗 在vim中 你可以这样做 s 1 s regex replace 是用于搜索和替换的 vim 命令 使其适用于整个文件 and 分别表示行的开始和结束 捕捉
  • 在摩卡测试之间重新导入模块

    在我的节点 打字稿快递应用程序中 我将配置设置存储在settings json作为对象加载和导出的文件config ts 每个使用配置设置的模块都会像这样导入模块 import Config from config config ts看起来
  • 如何使用 C# 验证文件是否是受密码保护的 ZIP 文件

    给定文件路径 如何验证该文件是否是受密码保护的 zip 文件 即 我将如何实现这个功能 bool IsPasswordProtectedZipFile string pathToFile 我不需要解压缩该文件 我只需要验证它是否是 ZIP
  • 可拖动的CALayer

    有什么方法可以让用户拖动 CALayer 吗 如果是这样 怎么办 在可可 Mac 中 图层本身无法接收鼠标事件 您必须在包含该层的视图或视图控制器中进行事件处理 If a mouseDragged 事件起源于某个层 请参见 CALayer
  • 在C++中使用const成员变量有什么优点

    我写代码像 template
  • python-re:如何匹配字母字符

    如何将字母字符与正则表达式匹配 我想要一个角色 w但不在 d 我希望它与 unicode 兼容 这就是为什么我不能使用 a zA Z 你的前两句话互相矛盾 在 w但不在 d 包括下划线 我从你的第三句话假设你不需要下划线 在信封背面使用维恩
  • iOS:用于登录屏幕的表格样式文本字段?

    我想制作一个像 Facebook 应用程序那样的登录屏幕 我想要复制的部分是两个文本字段 它们堆叠起来看起来像一个表格组 但我不明白他们是怎么做到的 谁知道其中的窍门 我无法发布图片 因为我是 stackoverflow 的新手 这是一种效
  • PHP 图片大小小于 1mb

    目前我正在使用以下内容来计算文件大小是否小于 1MB 但是由于以下代码来自 9lession 示例站点 它说要检查 1mb 的大小 但如果我乘以 1024 2 这就是他们在这里所做的不等于 1mb 而是 2048kb 说它上传的大小不是以
  • 如何在 macOS 上的 SwiftUI 中检测键盘事件?

    如何在 macOS 上的 SwiftUI 视图中检测键盘事件 我希望能够使用击键来控制特定屏幕上的项目 但不清楚如何检测键盘事件 这通常是通过覆盖keyDown event NSEvent in NSView 与 Xcode 12 捆绑在一
  • 将正则表达式匹配到第一个空格

    我必须填充商店的图像 并提供以下格式的图像文件夹 例如BRL0368 Side jpg 5510 Dura Guard Carpet jpg 现在我想做的就是把所有这些都砍掉 这样我就可以尝试在 Excel 中匹配零件编号 例如 BRL03
  • Func 的性能和继承

    我一直无法理解使用的性能特征Func lt gt 在我的代码中 当使用继承和泛型时 我发现自己一直在使用继承和泛型的组合 让我从一个最小的测试用例开始 这样我们都知道我们在说什么 然后我将发布结果 然后我将解释我的期望和原因 最小测试用例
  • AWS python lambda函数:没有名为请求的模块

    我对 AWS 还很陌生 遇到了一些问题 这是我的代码 from future import print function from urllib2 import Request urlopen URLError import request
  • 多索引 pandas 更新

    有两个数据帧 df1 和 df2 import pandas as pd import numpy as np import datetime A list range 3 9 B datetime date 2019 1 1 dateti
  • 单元测试复杂交互的正确方法

    我必须开始使用 QualityTools UnitTestFramework 为我们开发的 Web 服务层编写一些单元测试 而我的方法从一开始似乎就不正确 单元测试似乎应该能够以任何顺序运行 而不依赖于其他测试 我最初的想法是拥有类似于以下
  • 错误:由于表单未连接,表单提交被取消

    关于潜在重复的免责声明 我也遇到过类似的问题 我想我现在已经阅读了几乎所有这些答案 但没有一个为我解决了问题 我有一个应用程序 前端是 React 后端是 Flask 服务器 我有一个重大问题 该代码似乎检查了前端和后端 但是当我单击表单的
  • R - 如何分割文本和标点符号但有例外?

    在 R 中分析 Facebook 评论进行情感分析 表情符号是在 符号之间的文本编码 例子 Jesus te ama