regex - matlab:截断大文本并附加'...'
问题描述
我有大量文本(text
存储为cell-array
),我想在 matlab 中截断,比如 5 个字符。截断 withregexprep
非常有效,但是现在,我很想'...'
在每个截断匹配的末尾附加 a (并且仅在此处)。
(如何)这可以在 MATLAB 中实现regexprep
吗?
>> text = {'123456780','1','12'}; %<- small representative sample
>> regexprep(text,'(^.{0,5})(.*)','$1') %capture first 5 characters or less in first group (and replace the text with first group captures)
ans =
1×3 cell array
{'12345'} {'1'} {'12'}
它应该是:
ans =
1×3 cell array
{'12345...'} {'1'} {'12'}
解决方案
你需要使用
regexprep(text,'^(.{5}).+','$1...')
请参阅正则表达式演示。
要点是,仅当字符串超过五个字符时才需要触发替换(否则,您甚至不需要截断字符串)。
请注意,regexprep
如果没有找到正则表达式匹配,则按原样返回输入字符串,因此您无需担心长度为 0 到 5 个字符的字符串。
详情:
^
- 字符串的开始(.{5})
- 捕获组 1 ($1
):任意五个字符.+
- 任何一个或多个字符,尽可能多。
推荐阅读
- kubernetes - 将链码实例化到 Hyperledger Fabric 上的不同通道上
- swiftui - SwiftUI 2.0:如何锁定屏幕方向?
- asynchronous - 在异步函数的匹配中出现死锁
- r - dplyr 中的 mutate_at 出错-按组尝试窗口化滞后
- c# - 无法对 BlobServiceClient 和 Azure AD 进行身份验证
- javascript - iOS Safari:点击结束后点击突出显示(-webkit-tap-highlight)卡在屏幕上
- sequelize.js - 在 sequelize 中迁移和播种后未创建第二组表
- database - PLS-00201:使用 EXECUTE IMMEDIATE 时必须声明标识符“IMMEDIATE”?
- netlogo - NetLogo 中的基本问题(创建等式)
- javascript - 赛普拉斯 - Salesforce | 在同一测试场景中运行第二次尝试后,我们遇到了一个问题