正则表达式仅删除字符串左侧和右侧的符号

时间:2019-03-01 02:27:23

标签: python regex string

我有一个包含很多杂音的字符串,我只想删除字符串左右两侧的符号。

|«_ Date: 23/12/18 16:41 ($123) :}‘'

使用我目前的方法,我可以删除所有这些符号,但是它也包括位于中心的符号,我不打算这样做。

re.sub(r"[^a-zA-z0-9,./$ ' ' -]", "", s)

我理想的结果是这样

Date: 23/12/18 16:41 ($123)

2 个答案:

答案 0 :(得分:1)

现在这是一个非常粗糙的模式,有很多警告。它满足了您上面的示例字符串,但是我可以预见,您可能会得到很多错误的匹配。由于我不知道字符串的结构,因此很难进一步完善。

^(.*?)(?:[0-9a-zA-Z].*?\))(.*?)$

上面的模式将所有前导字符捕获为组1,并将右括号后的所有尾随字符捕获为组2。但是,如果有效字符串中还有另一对括号,则在结尾(123)之前,它将陷入混乱起来。请参见下面的示例。

示例:https://regex101.com/r/JikTHo/1

答案 1 :(得分:0)

@potato的解决方案非常适合我的用例。

相关的regex命令应为

解决方案

re.sub(r"(?i)^[^a-z\d()]*|[^a-z\d()]+$", "", s)