regex – 正则表达式,用于重新排序字段中的字符串
发布时间:2020-12-14 05:58:28 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个带有正则表达式的程序来清理一些数据.假设我有一个带有字母和数字的房间名称.在最终输出中,我需要使用“完整字符串(不包括字母和数字)字母编号”模式输出房间名称,如下面的示例所示.但是,到目前为止我写的正则表达式,我得到了非常混乱的结
我正在尝试编写一个带有正则表达式的程序来清理一些数据.假设我有一个带有字母和数字的房间名称.在最终输出中,我需要使用“完整字符串(不包括字母和数字)字母编号”模式输出房间名称,如下面的示例所示.但是,到目前为止我写的正则表达式,我得到了非常混乱的结果,这是我的消息的底部.由于某种原因,它会在某些行上放置字母和字符,即使输入数据中可能没有.谢谢.
编辑:我对输入数据进行了编辑.我想概括代码以获取任意数量的字符串,而不仅仅是单词“ROOM”. # the pattern should be "the full string (excluding letter & number) + letter + number". For example: ATLANTA ROOM ATLANTA ROOM 3 NEW YORK ROOM A 2 ROOM A 4 THE BIG AWESOME ROOM B ROOM B 4 GEORGETOWN ROOM B 2 NEW YORK ROOM C 2 NEW YORK ROOM C LOS ANGELES ROOM E 2 # program to clean with regular expressions. there could be multiple spaces between words dd <- c("ATLANTA ROOM "," ATLANTA ROOM 3","NEW YORK A ROOM 2","4 ROOM A","THE BIG AWESOME ROOM B"," ROOM 4 B","GEORGETOWN B 2 ROOM "," C NEW YORK ROOM 2","NEW YORK ROOM C","LOS ANGELES ROOM 2 E") m_char_num <- regexpr("(<A|B|C|D|E|1|2|3|4>)",dd) m_char <- regexpr("(<A|B|C|D|E>)",dd) m_num <- regexpr("(<1|2|3|4>)",dd) (dd2 <- paste(gsub("( +)"," ",gsub("(^ +)|( +$)","",gsub("(<A|B|C|D|E|1|2|3|4>)",dd))),regmatches(dd,m_char),m_num),sep = " ")) # actual output from the program "TLANTA ROOMA3","TLANTA ROOMA2","NW YORK ROOMA4","ROOMA4","TH IG WSOM ROOME2","ROOMB2","GORGTOWN ROOMB2","NW YORK ROOMC3","NW YORK ROOMC2","LOS NGLS ROOMA4" 解决方法
这是一个尝试:
sub(' $','',# clean up spaces at the end gsub(' +',' ',# clean up double spaces # rearrange letter and numbers sub('^([A-Z]?)([0-9]*)([A-Z]?)$','ROOM 13 2',gsub(' |ROOM',dd) # remove spaces and ROOM ) ) ) #[1] "ROOM" "ROOM 3" "ROOM A 2" "ROOM A 4" "ROOM B" "ROOM B 4" "ROOM B 2" #[8] "ROOM C 2" "ROOM C" "ROOM E 2" 以下是编辑后的OP和评论的相同逻辑(假设房间名称是至少包含3个字母且最多为2个字母的房间名称的单词): gsub('(^ | $)',# clean up spaces in front or end gsub(' +',# clean up double spaces # extract room name and put it in front of the letter and number paste(gsub('b([A-Z][A-Z]?|[0-9]+)b',dd,perl = T),sub('^([A-Z]+)?([0-9]*)([A-Z]+)?$','13 2',gsub(' |www+',dd) # remove spaces and words ) ) ) ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql – 了解“位图堆扫描”和“位图索引扫描”
- 【JavaWeb-24】AOP介绍和术语、手动/半自动/自动实现AOP、基
- (?:exp)这样匹配表达式exp表示什么意思?
- 【Flutter 混合开发】添加 Flutter 到 iOS
- c# – 计算代码度量标准时发生错误
- Ruby的OpenSSL :: Random的种子是否足够?
- C#用于重置网络适配器
- swift开发笔记14 - 解析json数据文件
- res\drawable-hdpi\Flashlight.xml: Invalid fi
- c# – 项目中不存在Microsoft.Web.Publishing.targets的Bef