在正则表达式中剥离包装空间

时间:2018-04-02 05:08:03

标签: python regex python-3.x

我想找到没有包装空格的 Target 字符串,它可以有\s\w\d之类的任何非+!#个字符,并且在它们之间有任意数量的空格,并且边缘(左,右)

Target (foo) {bar} [spam] | (foo2)

当前表达式如下所示:

re.search(r"([^\[\]}{()|]+)", "  +34s kj-3 R B# (foo) {bar} [spam] | (foo2)")

和group(0)返回:

'  +34s kj-3 R B# '

这个expr的问题是我必须编写两个if match:条件,因为它也只接受空格。所以我必须将其剥离并再次检查。

最近的解决方案是使用与\b类似的r"\b([^\[\]}{()|]+)\b",但它会像+#一样“剥离”字符:

'34s kj-3 R B'

编辑:目标字符串在以太网上也没有包装空格。

编辑:示例(foo) {bar} [spam] | (foo2)

中包含其余的sting

1 个答案:

答案 0 :(得分:0)

使用这个衬垫怎么样:

<强>更新

print(re.search(r"^[^\(\)\{\}\[\]\|]+"," +34s kj-3 R B#  (foo) {bar} [spam] | (foo2)").group().strip(' \t\n\r'))

Run Here

说明:

  • ^[^\(\)\{\}\[\]\|]+找到任何东西直到任何类型的支架 开始
  • strip(' \t\n\r')将修剪任何前导/尾随 此匹配字符串中的空格/制表符/换行符。