Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从字符串中删除额外的文本和标点符号,保持微笑?

从字符串中删除额外的文本和标点符号,保持微笑?
EN

Stack Overflow用户
提问于 2013-04-15 11:45:06
回答 2查看 305关注 0票数 0

我在使用正则表达式时遇到了一些问题。你能帮帮我吗?以下是我想要解决的问题-

输入::,.:d.:)您今天过得如何? 输出 :D :) :P :(

基本上,我希望删除输入字符串中的标点符号和文本,如-(.,:;等),并将它们替换为空字符串。但是我想保留笑脸-:),:(或:P .I已经编写了以下代码,但它不起作用。

Regex=“A_x:d(P

但它也删除了":D和:P“笑脸。

EN

回答 2

Stack Overflow用户

发布于 2013-04-16 04:45:19

下面的regex字符串应该适用于您:

代码语言:javascript
运行
AI代码解释
复制
(((?<!:)[^:])|(:(?![PD\(\)])))[^:]*

它由两部分组成:

  1. ( ((?<!:)[^:]) = (:(?![PD\(\)])) )
  2. [^:]*

第一部分是使用|的OR ( 消极向前看和后看 )语句。它查找不包含笑脸的文本块中的第一个字符,方法是:

一个明显不在微笑中的角色:

  1. 没有冒号前面的任何字符:(?<!:)
  2. 而不是冒号本身:[^:]

或者一个冒号后面没有一个微笑字符:

  1. 结肠:
  2. 后面没有一个字符是笑脸的下半部分:(?![PD\(\)]))

第二部分([^:]*)继续寻找,直到我们找到一个潜在的微笑(一个冒号)的开始。

此Regex目前只找到以下微笑:

  • :D
  • :P
  • :(
  • :)

您可以更新OR语句的下半部分以找到其他的笑脸。

总之,这个Regex应该找到所有不是微笑的部分。您可以简单地在Regex变量中声明它,然后调用.Replace(string input, string replacement),传入输入字符串和要用(本例中为String.Empty)替换非微笑字符的字符串。

票数 2
EN

Stack Overflow用户

发布于 2013-04-15 11:54:57

不是很完美的解决方案:

代码语言:javascript
运行
AI代码解释
复制
string text = ":,... :D..:::))How are you today :P?..:(*";
text = text.Replace(":)", "@@@)");
text = text.Replace(":D", "@@@D");
text = text.Replace(":P", "@@@P");

// clean up your punctuation marks here
//

text = text.Replace("@@@)", ":)");
text = text.Replace("@@@D", ":D");
text = text.Replace("@@@P", ":P");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16023551

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文