使用RegEx搜索特殊字符

时间:2019-10-22 10:04:04

标签: regex python-3.x

我有一个看起来如下的字符串:

  

['(18 | H)','(27 | V)','(29 | *)']

我想过滤|之间的所有单个字符。和)。我可以使用以下正则表达式过滤掉字符H和V,这对于初学者来说非常容易:([A-Z]) 现在我遇到了一个问题,因为正则表达式中使用了星号,所以无法过滤出'*'。我尝试使用方括号和反冲来解决此问题,但是如您所见,它没有用。

有人知道如何解决此问题吗?谢谢!

3 个答案:

答案 0 :(得分:0)

尝试(?<=\|).(?=\))

说明:

(?<=\|)-令人反感:断言\|的前置条件,字面匹配|

.-匹配任何字符

(?=\))-正向前进:断言以下是\),它与)字面上匹配

Demo

答案 1 :(得分:0)

“全部过滤”有点令人困惑-不确定要过滤掉还是只保留其中...假设只需要|之后{{ 1}},您想要这样的东西:

)

这会将\|(.)\) |之间的任何字符放入您的)

即使我误解了您的问题,我认为这也会使您朝正确的方向前进-只需使用点(。)来表示单个字符,并转义特殊字符$1和{{ 1}}。

我假设您知道如何使用|(或),具体取决于您使用的regex的风格-我已经有一段时间没有使用Python了,记住确切的语法)

答案 2 :(得分:-1)

这是一种方法。

例如:

import re

data = ['(18|H)', '(27|V)', '(29|*)']
print([re.search(r"\|(.*)\)", i).group(1) for i in data])

输出:

['H', 'V', '*']