说明:替换(删除)2个特殊字符间的字符串,同时把特殊字符也替换(删除)了。要求:一步到位。
关于这个问题,是我朋友,今天给我提出的。TA是用于微博正文的提取,大家都知道,微博正文的开始是以#……#开始的,实际问题就是删除#……#之间的内容包括2端的#.
大家平时用得最多的就是删除2个特殊字符之间的内容,但是特殊字符是保留的,但是这次却要删除了,问题就有些棘手了。
题外话:最近老是赶脚没一点尽头,不知道为什么,总是没精打采的,不知道干什么?假期怎么会这样,直到今天的朋友给我的问题,我明白了,原来学计算机的最怕的就是没有问题,没有问题,让我失去了挑战的滋味,所以生活变得平平。啊,终于明白了,原来我喜欢给自己找麻烦。O(∩_∩)O哈哈~
我截取了今天的一个微博,如下:
也就是把方框的内容删除掉。可以把这个当成字符串。额,今天爱耳日,挺形象的,今天3月3日
解决方法思路:
- 不管使用哪种语言,都有字符串的截取,也就是截取2个特殊字符间的字符串,然后替换为空就可以了,可是这所谓的替换并没有替换掉2个特殊字符。所以我们还需要使用第二次的特殊字符的替换,将特殊字符替换为空。第一次替换的是2个特殊字符之间的字符串为空,第二次替换的留下来的2个特殊字符。显然,这个解决方法不可行,需要两次替换,效率低。
- 有没有什么方法可以一步到位呢,有,但是需要使用正则表达式。方法(1)就不演示了,直接上结论。
因为没有其他语言的环境,所以就用PHP了,而且我的水平有限,解决问题中有瑕疵,以后还会回来解决的。正则没多大区别。
表达式(1):'/#([^\\#|.]+)#/'
即使文章中含有一个#,也没关系。那要是2个呢,就有问题了。如下:
表达式(2):'/\\[#\\]([^\\#|.]+)\\[#\\]/'
表达式(3):'/(.*#).*(.*#)/'
已看,结果正确,再往下看。
继续看
综上,表达式(1)是可以解决问题的,但前提是文章里不能有大于1个的#.我只能提供这些了,您要是有好的解决方法,请留言。谢谢。