用正则表达式剥离标点符号 - python

时间:2016-05-02 05:10:39

标签: python regex strip

我想从字符串的开头和结尾去掉所有的标点符号(除了点),但不是在它的中间。

例如原始字符串:

@#%%.Hol$a.A.$%

我希望从结尾开始删除.Hol$a.A.这个词,但不要从单词的中间删除。

另一个例子可能是字符串:

@#%%...&Hol$a.A....$%

在这种情况下,返回的字符串应为..&Hol$a.A....,因为我们不关心是否重复允许的字符。

这个想法是在单词的开头和结尾删除所有标点符号(除了点)。单词定义为\w和/或.

一个实际的例子是字符串'Barnes&Nobles'。对于文本分析,将Barnes&Nobles识别为单个实体,但没有'

非常重要

如何使用Regex实现目标?

2 个答案:

答案 0 :(得分:2)

使用这个简单易用的正则表达式:

override func viewDidLoad()
{
     let img:UIImageView=UIImageView(frame: PostTable.frame)
     img.image=UIImage(named: "hi.png")
     PostTable.backgroundView=img
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("cell")

        let selectView=UIView()
        selectView.backgroundColor=UIColor.clearColor()
        cell.selectedBackgroundView=selectView
        cell.backgroundColor=UIColor.clearColor()
        cell.contentView.backgroundColor=UIColor.clearColor()

        return cell!
    }

它将完全匹配您想要的结果,仅此而已。

  • [\w.].*[\w.] 匹配任何字母数字字符和点
  • [\w.]匹配任何字符(通常除了换行符)
  • .*匹配任何字母数字字符和点

要更改分隔符,只需更改[\w.]括号内的允许字符集。

Check this regex out on regex101.com

[]

答案 1 :(得分:1)

根据标点符号的含义,您可以调整以下代码:

import re
res = re.search(r"^[^.]*(.[^.]*.([^.]*.)*?)[^.]*$", "@#%%.Hol$a.A.$%")
mystr = res.group(1)

这将删除表达式中点之前和之后的所有内容。 警告,如果字符串不匹配,您必须检查结果是否不同。